@beesolve/lambda-keep-active 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdk.js +3 -3
- package/dist/lambda/handler.js +4 -0
- package/package.json +1 -1
- package/dist/chunk-3cawvvw3.js +0 -5
- package/dist/chunk-4pkw7jk4.js +0 -5
- package/dist/chunk-7bag664c.js +0 -5
- package/dist/chunk-9zmzw25z.js +0 -8
- package/dist/chunk-bh9mv7m6.js +0 -4
- package/dist/chunk-dkk1zwm0.js +0 -5
- package/dist/chunk-dyyrwzgp.js +0 -5
- package/dist/chunk-e9mt878v.js +0 -5
- package/dist/chunk-ekwpcdh4.js +0 -5
- package/dist/chunk-fbbbv2d4.js +0 -16
- package/dist/chunk-ggeka6d3.js +0 -5
- package/dist/chunk-jxb3myh9.js +0 -4
- package/dist/chunk-kvnavsh3.js +0 -5
- package/dist/chunk-m1zv7mtv.js +0 -4
- package/dist/chunk-p85vag28.js +0 -32
- package/dist/chunk-pqhmh7nm.js +0 -4
- package/dist/chunk-r8mj3nq7.js +0 -5
- package/dist/chunk-rea1s8cr.js +0 -4
- package/dist/chunk-rn0z3e77.js +0 -4
- package/dist/chunk-t5j8kj9p.js +0 -11
- package/dist/chunk-whenq5kz.js +0 -5
- package/dist/chunk-x343hkb8.js +0 -5
- package/dist/handler.js +0 -12
package/dist/handler.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{c as Xu,d as Zu,e as Cu,f as el,g as ou,h as yu,j as Ae,k as tl,l as nt,m as sl,n as rl,o as Bu,p as it,q as Mu,r as fu,s as qu,t as pu,u as Wu,v as nl}from"./chunk-p85vag28.js";import{w as Eu,x as Ou}from"./chunk-dkk1zwm0.js";import{y as Dy}from"./chunk-r8mj3nq7.js";import{A as vu,C as $u,D as $h,F as _u,G as st,K as ne,z as Cn}from"./chunk-fbbbv2d4.js";import{L as Qu}from"./chunk-ekwpcdh4.js";import{O as Su}from"./chunk-whenq5kz.js";import"./chunk-kvnavsh3.js";import{Q as Ry}from"./chunk-3cawvvw3.js";import"./chunk-t5j8kj9p.js";import{S as gy}from"./chunk-4pkw7jk4.js";import{T as Ze,U as k,W as Ce}from"./chunk-e9mt878v.js";var Zn=k((cy)=>{var hy=(e)=>Object.assign(e,{eventStreamMarshaller:e.eventStreamSerdeProvider(e)});cy.resolveEventStreamSerdeConfig=hy});var ws=k((_n)=>{Object.defineProperty(_n,"__esModule",{value:!0});_n.resolveHttpAuthSchemeConfig=_n.defaultLambdaHttpAuthSchemeProvider=_n.defaultLambdaHttpAuthSchemeParametersProvider=void 0;var dy=Ae(),cs=Cn(),by=async(e,t,s)=>{return{operation:(0,cs.getSmithyContext)(t).operation,region:await(0,cs.normalizeProvider)(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}};_n.defaultLambdaHttpAuthSchemeParametersProvider=by;function Sy(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"lambda",region:e.region},propertiesExtractor:(t,s)=>({signingProperties:{config:t,context:s}})}}var vy=(e)=>{let t=[];switch(e.operation){default:t.push(Sy(e))}return t};_n.defaultLambdaHttpAuthSchemeProvider=vy;var Ey=(e)=>{let t=(0,dy.resolveAwsSdkSigV4Config)(e);return Object.assign(t,{authSchemePreference:(0,cs.normalizeProvider)(e.authSchemePreference??[])})};_n.resolveHttpAuthSchemeConfig=Ey});var ti=k((hI,Ay)=>{Ay.exports={name:"@aws-sdk/client-lambda",description:"AWS SDK for JavaScript Lambda Client for Node.js, Browser and React Native",version:"3.936.0",scripts:{build:"concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'","build:cjs":"node ../../scripts/compilation/inline client-lambda","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4",clean:"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo lambda"},main:"./dist-cjs/index.js",types:"./dist-types/index.d.ts",module:"./dist-es/index.js",sideEffects:!1,dependencies:{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.936.0","@aws-sdk/credential-provider-node":"3.936.0","@aws-sdk/middleware-host-header":"3.936.0","@aws-sdk/middleware-logger":"3.936.0","@aws-sdk/middleware-recursion-detection":"3.936.0","@aws-sdk/middleware-user-agent":"3.936.0","@aws-sdk/region-config-resolver":"3.936.0","@aws-sdk/types":"3.936.0","@aws-sdk/util-endpoints":"3.936.0","@aws-sdk/util-user-agent-browser":"3.936.0","@aws-sdk/util-user-agent-node":"3.936.0","@smithy/config-resolver":"^4.4.3","@smithy/core":"^3.18.5","@smithy/eventstream-serde-browser":"^4.2.5","@smithy/eventstream-serde-config-resolver":"^4.3.5","@smithy/eventstream-serde-node":"^4.2.5","@smithy/fetch-http-handler":"^5.3.6","@smithy/hash-node":"^4.2.5","@smithy/invalid-dependency":"^4.2.5","@smithy/middleware-content-length":"^4.2.5","@smithy/middleware-endpoint":"^4.3.12","@smithy/middleware-retry":"^4.4.12","@smithy/middleware-serde":"^4.2.6","@smithy/middleware-stack":"^4.2.5","@smithy/node-config-provider":"^4.3.5","@smithy/node-http-handler":"^4.4.5","@smithy/protocol-http":"^5.3.5","@smithy/smithy-client":"^4.9.8","@smithy/types":"^4.9.0","@smithy/url-parser":"^4.2.5","@smithy/util-base64":"^4.3.0","@smithy/util-body-length-browser":"^4.2.0","@smithy/util-body-length-node":"^4.2.1","@smithy/util-defaults-mode-browser":"^4.3.11","@smithy/util-defaults-mode-node":"^4.2.14","@smithy/util-endpoints":"^3.2.5","@smithy/util-middleware":"^4.2.5","@smithy/util-retry":"^4.2.5","@smithy/util-stream":"^4.5.6","@smithy/util-utf8":"^4.2.0","@smithy/util-waiter":"^4.2.5",tslib:"^2.6.2"},devDependencies:{"@tsconfig/node18":"18.2.4","@types/node":"^18.19.69",concurrently:"7.0.0","downlevel-dts":"0.10.1",rimraf:"3.0.2",typescript:"~5.8.3"},engines:{node:">=18.0.0"},typesVersions:{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},files:["dist-*/**"],author:{name:"AWS SDK for JavaScript Team",url:"https://aws.amazon.com/javascript/"},license:"Apache-2.0",browser:{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},homepage:"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-lambda",repository:{type:"git",url:"https://github.com/aws/aws-sdk-js-v3.git",directory:"clients/client-lambda"}}});var bs=k((fy)=>{var ds=Ry(),ze=gy(),ky=Dy(),si="AWS_EC2_METADATA_DISABLED",Iy=async(e)=>{let{ENV_CMDS_FULL_URI:t,ENV_CMDS_RELATIVE_URI:s,fromContainerMetadata:n,fromInstanceMetadata:i}=await import("./chunk-7bag664c.js");if(process.env[s]||process.env[t]){e.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata");let{fromHttp:y}=await import("./chunk-9zmzw25z.js");return ze.chain(y(e),n(e))}if(process.env[si]&&process.env[si]!=="false")return async()=>{throw new ze.CredentialsProviderError("EC2 Instance Metadata Service access disabled",{logger:e.logger})};return e.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"),i(e)};function $y(e,t){let s=Oy(e),n,i,y,S=async(d)=>{if(d?.forceRefresh)return await s(d);if(y?.expiration){if(y?.expiration?.getTime()<Date.now())y=void 0}if(n)await n;else if(!y||t?.(y))if(y){if(!i)i=s(d).then((D)=>{y=D,i=void 0})}else return n=s(d).then((D)=>{y=D,n=void 0}),S(d);return y};return S}var Oy=(e)=>async(t)=>{let s;for(let n of e)try{return await n(t)}catch(i){if(s=i,i?.tryNextLink)continue;throw i}throw s},ri=!1,By=(e={})=>$y([async()=>{if(e.profile??process.env[ky.ENV_PROFILE]){if(process.env[ds.ENV_KEY]&&process.env[ds.ENV_SECRET]){if(!ri)(e.logger?.warn&&e.logger?.constructor?.name!=="NoOpLogger"?e.logger.warn.bind(e.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
|
|
2
|
-
Multiple credential sources detected:
|
|
3
|
-
Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
|
|
4
|
-
This SDK will proceed with the AWS_PROFILE value.
|
|
5
|
-
|
|
6
|
-
However, a future version may change this behavior to prefer the ENV static credentials.
|
|
7
|
-
Please ensure that your environment only sets either the AWS_PROFILE or the
|
|
8
|
-
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
|
|
9
|
-
`),ri=!0}throw new ze.CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.",{logger:e.logger,tryNextLink:!0})}return e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),ds.fromEnv(e)()},async(t)=>{e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:s,ssoAccountId:n,ssoRegion:i,ssoRoleName:y,ssoSession:S}=e;if(!s&&!n&&!i&&!y&&!S)throw new ze.CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:e.logger});let{fromSSO:d}=await import("./chunk-x343hkb8.js");return d(e)(t)},async(t)=>{e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:s}=await import("./chunk-m1zv7mtv.js");return s(e)(t)},async(t)=>{e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:s}=await import("./chunk-bh9mv7m6.js");return s(e)(t)},async(t)=>{e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:s}=await import("./chunk-rea1s8cr.js");return s(e)(t)},async()=>{return e.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await Iy(e))()},async()=>{throw new ze.CredentialsProviderError("Could not load credentials from any providers",{tryNextLink:!1,logger:e.logger})}],ni),My=(e)=>e?.expiration!==void 0,ni=(e)=>e?.expiration!==void 0&&e.expiration.getTime()-Date.now()<300000;fy.credentialsTreatedAsExpired=ni;fy.credentialsWillNeedRefresh=My;fy.defaultProvider=By});var li=k((wI,ui)=>{var{defineProperty:_e,getOwnPropertyDescriptor:Ny,getOwnPropertyNames:Ty}=Object,Fy=Object.prototype.hasOwnProperty,Hy=(e,t)=>_e(e,"name",{value:t,configurable:!0}),Ly=(e,t)=>{for(var s in t)_e(e,s,{get:t[s],enumerable:!0})},Py=(e,t,s,n)=>{if(t&&typeof t==="object"||typeof t==="function"){for(let i of Ty(t))if(!Fy.call(e,i)&&i!==s)_e(e,i,{get:()=>t[i],enumerable:!(n=Ny(t,i))||n.enumerable})}return e},zy=(e)=>Py(_e({},"__esModule",{value:!0}),e),ii={};Ly(ii,{isArrayBuffer:()=>Vy});ui.exports=zy(ii);var Vy=Hy((e)=>typeof ArrayBuffer==="function"&&e instanceof ArrayBuffer||Object.prototype.toString.call(e)==="[object ArrayBuffer]","isArrayBuffer")});var hi=k((dI,yi)=>{var{defineProperty:et,getOwnPropertyDescriptor:xy,getOwnPropertyNames:Yy}=Object,Jy=Object.prototype.hasOwnProperty,ai=(e,t)=>et(e,"name",{value:t,configurable:!0}),Gy=(e,t)=>{for(var s in t)et(e,s,{get:t[s],enumerable:!0})},Ky=(e,t,s,n)=>{if(t&&typeof t==="object"||typeof t==="function"){for(let i of Yy(t))if(!Jy.call(e,i)&&i!==s)et(e,i,{get:()=>t[i],enumerable:!(n=xy(t,i))||n.enumerable})}return e},my=(e)=>Ky(et({},"__esModule",{value:!0}),e),oi={};Gy(oi,{fromArrayBuffer:()=>Xy,fromString:()=>Zy});yi.exports=my(oi);var Qy=li(),Ss=Ce("buffer"),Xy=ai((e,t=0,s=e.byteLength-t)=>{if(!(0,Qy.isArrayBuffer)(e))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof e} (${e})`);return Ss.Buffer.from(e,t,s)},"fromArrayBuffer"),Zy=ai((e,t)=>{if(typeof e!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof e} (${e})`);return t?Ss.Buffer.from(e,t):Ss.Buffer.from(e)},"fromString")});var Si=k((bI,bi)=>{var{defineProperty:tt,getOwnPropertyDescriptor:Cy,getOwnPropertyNames:_y}=Object,eh=Object.prototype.hasOwnProperty,vs=(e,t)=>tt(e,"name",{value:t,configurable:!0}),th=(e,t)=>{for(var s in t)tt(e,s,{get:t[s],enumerable:!0})},sh=(e,t,s,n)=>{if(t&&typeof t==="object"||typeof t==="function"){for(let i of _y(t))if(!eh.call(e,i)&&i!==s)tt(e,i,{get:()=>t[i],enumerable:!(n=Cy(t,i))||n.enumerable})}return e},rh=(e)=>sh(tt({},"__esModule",{value:!0}),e),ci={};th(ci,{fromUtf8:()=>di,toUint8Array:()=>nh,toUtf8:()=>ih});bi.exports=rh(ci);var wi=hi(),di=vs((e)=>{let t=(0,wi.fromString)(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength/Uint8Array.BYTES_PER_ELEMENT)},"fromUtf8"),nh=vs((e)=>{if(typeof e==="string")return di(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)},"toUint8Array"),ih=vs((e)=>{if(typeof e==="string")return e;if(typeof e!=="object"||typeof e.byteOffset!=="number"||typeof e.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return(0,wi.fromArrayBuffer)(e.buffer,e.byteOffset,e.byteLength).toString("utf8")},"toUtf8")});var pi=k((vi)=>{Object.defineProperty(vi,"__esModule",{value:!0});vi.convertToBuffer=void 0;var uh=Si(),lh=typeof Buffer<"u"&&Buffer.from?function(e){return Buffer.from(e,"utf8")}:uh.fromUtf8;function ah(e){if(e instanceof Uint8Array)return e;if(typeof e==="string")return lh(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}vi.convertToBuffer=ah});var gi=k((Ui)=>{Object.defineProperty(Ui,"__esModule",{value:!0});Ui.isEmptyData=void 0;function oh(e){if(typeof e==="string")return e.length===0;return e.byteLength===0}Ui.isEmptyData=oh});var ki=k((Di)=>{Object.defineProperty(Di,"__esModule",{value:!0});Di.numToUint8=void 0;function yh(e){return new Uint8Array([(e&4278190080)>>24,(e&16711680)>>16,(e&65280)>>8,e&255])}Di.numToUint8=yh});var Oi=k((Ii)=>{Object.defineProperty(Ii,"__esModule",{value:!0});Ii.uint32ArrayFrom=void 0;function hh(e){if(!Uint32Array.from){var t=new Uint32Array(e.length),s=0;while(s<e.length)t[s]=e[s],s+=1;return t}return Uint32Array.from(e)}Ii.uint32ArrayFrom=hh});var Es=k((ge)=>{Object.defineProperty(ge,"__esModule",{value:!0});ge.uint32ArrayFrom=ge.numToUint8=ge.isEmptyData=ge.convertToBuffer=void 0;var ch=pi();Object.defineProperty(ge,"convertToBuffer",{enumerable:!0,get:function(){return ch.convertToBuffer}});var wh=gi();Object.defineProperty(ge,"isEmptyData",{enumerable:!0,get:function(){return wh.isEmptyData}});var dh=ki();Object.defineProperty(ge,"numToUint8",{enumerable:!0,get:function(){return dh.numToUint8}});var bh=Oi();Object.defineProperty(ge,"uint32ArrayFrom",{enumerable:!0,get:function(){return bh.uint32ArrayFrom}})});var Wi=k((fi)=>{Object.defineProperty(fi,"__esModule",{value:!0});fi.AwsCrc32=void 0;var Bi=st(),ps=Es(),Mi=Us(),vh=function(){function e(){this.crc32=new Mi.Crc32}return e.prototype.update=function(t){if((0,ps.isEmptyData)(t))return;this.crc32.update((0,ps.convertToBuffer)(t))},e.prototype.digest=function(){return Bi.__awaiter(this,void 0,void 0,function(){return Bi.__generator(this,function(t){return[2,(0,ps.numToUint8)(this.crc32.digest())]})})},e.prototype.reset=function(){this.crc32=new Mi.Crc32},e}();fi.AwsCrc32=vh});var Us=k((As)=>{Object.defineProperty(As,"__esModule",{value:!0});As.AwsCrc32=As.Crc32=As.crc32=void 0;var Eh=st(),ph=Es();function Uh(e){return new ji().update(e).digest()}As.crc32=Uh;var ji=function(){function e(){this.checksum=4294967295}return e.prototype.update=function(t){var s,n;try{for(var i=Eh.__values(t),y=i.next();!y.done;y=i.next()){var S=y.value;this.checksum=this.checksum>>>8^gh[(this.checksum^S)&255]}}catch(d){s={error:d}}finally{try{if(y&&!y.done&&(n=i.return))n.call(i)}finally{if(s)throw s.error}}return this},e.prototype.digest=function(){return(this.checksum^4294967295)>>>0},e}();As.Crc32=ji;var Ah=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],gh=(0,ph.uint32ArrayFrom)(Ah),Dh=Wi();Object.defineProperty(As,"AwsCrc32",{enumerable:!0,get:function(){return Dh.AwsCrc32}})});var Yi=k((Lh)=>{var Fi=Us(),he=$h();class De{bytes;constructor(e){if(this.bytes=e,e.byteLength!==8)throw Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>9223372036854776000||e<-9223372036854776000)throw Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);let t=new Uint8Array(8);for(let s=7,n=Math.abs(Math.round(e));s>-1&&n>0;s--,n/=256)t[s]=n;if(e<0)Ni(t);return new De(t)}valueOf(){let e=this.bytes.slice(0),t=e[0]&128;if(t)Ni(e);return parseInt(he.toHex(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ni(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1;t--)if(e[t]++,e[t]!==0)break}class gs{toUtf8;fromUtf8;constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){let t=[];for(let i of Object.keys(e)){let y=this.fromUtf8(i);t.push(Uint8Array.from([y.byteLength]),y,this.formatHeaderValue(e[i]))}let s=new Uint8Array(t.reduce((i,y)=>i+y.byteLength,0)),n=0;for(let i of t)s.set(i,n),n+=i.byteLength;return s}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":let t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":let s=new DataView(new ArrayBuffer(5));return s.setUint8(0,4),s.setInt32(1,e.value,!1),new Uint8Array(s.buffer);case"long":let n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":let i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);let y=new Uint8Array(i.buffer);return y.set(e.value,3),y;case"string":let S=this.fromUtf8(e.value),d=new DataView(new ArrayBuffer(3+S.byteLength));d.setUint8(0,7),d.setUint16(1,S.byteLength,!1);let D=new Uint8Array(d.buffer);return D.set(S,3),D;case"timestamp":let H=new Uint8Array(9);return H[0]=8,H.set(De.fromNumber(e.value.valueOf()).bytes,1),H;case"uuid":if(!Th.test(e.value))throw Error(`Invalid UUID received: ${e.value}`);let f=new Uint8Array(17);return f[0]=9,f.set(he.fromHex(e.value.replace(/\-/g,"")),1),f}}parse(e){let t={},s=0;while(s<e.byteLength){let n=e.getUint8(s++),i=this.toUtf8(new Uint8Array(e.buffer,e.byteOffset+s,n));switch(s+=n,e.getUint8(s++)){case 0:t[i]={type:Ti,value:!0};break;case 1:t[i]={type:Ti,value:!1};break;case 2:t[i]={type:Oh,value:e.getInt8(s++)};break;case 3:t[i]={type:Bh,value:e.getInt16(s,!1)},s+=2;break;case 4:t[i]={type:Mh,value:e.getInt32(s,!1)},s+=4;break;case 5:t[i]={type:fh,value:new De(new Uint8Array(e.buffer,e.byteOffset+s,8))},s+=8;break;case 6:let y=e.getUint16(s,!1);s+=2,t[i]={type:qh,value:new Uint8Array(e.buffer,e.byteOffset+s,y)},s+=y;break;case 7:let S=e.getUint16(s,!1);s+=2,t[i]={type:Wh,value:this.toUtf8(new Uint8Array(e.buffer,e.byteOffset+s,S))},s+=S;break;case 8:t[i]={type:jh,value:new Date(new De(new Uint8Array(e.buffer,e.byteOffset+s,8)).valueOf())},s+=8;break;case 9:let d=new Uint8Array(e.buffer,e.byteOffset+s,16);s+=16,t[i]={type:Nh,value:`${he.toHex(d.subarray(0,4))}-${he.toHex(d.subarray(4,6))}-${he.toHex(d.subarray(6,8))}-${he.toHex(d.subarray(8,10))}-${he.toHex(d.subarray(10))}`};break;default:throw Error("Unrecognized header type tag")}}return t}}var Ti="boolean",Oh="byte",Bh="short",Mh="integer",fh="long",qh="binary",Wh="string",jh="timestamp",Nh="uuid",Th=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/,Hi=4,re=Hi*2,ce=4,Fh=re+ce*2;function Hh({byteLength:e,byteOffset:t,buffer:s}){if(e<Fh)throw Error("Provided message too short to accommodate event stream message overhead");let n=new DataView(s,t,e),i=n.getUint32(0,!1);if(e!==i)throw Error("Reported message length does not match received message length");let y=n.getUint32(Hi,!1),S=n.getUint32(re,!1),d=n.getUint32(e-ce,!1),D=new Fi.Crc32().update(new Uint8Array(s,t,re));if(S!==D.digest())throw Error(`The prelude checksum specified in the message (${S}) does not match the calculated CRC32 checksum (${D.digest()})`);if(D.update(new Uint8Array(s,t+re,e-(re+ce))),d!==D.digest())throw Error(`The message checksum (${D.digest()}) did not match the expected value of ${d}`);return{headers:new DataView(s,t+re+ce,y),body:new Uint8Array(s,t+re+ce+y,i-y-(re+ce+ce))}}class Li{headerMarshaller;messageBuffer;isEndOfStream;constructor(e,t){this.headerMarshaller=new gs(e,t),this.messageBuffer=[],this.isEndOfStream=!1}feed(e){this.messageBuffer.push(this.decode(e))}endOfStream(){this.isEndOfStream=!0}getMessage(){let e=this.messageBuffer.pop(),t=this.isEndOfStream;return{getMessage(){return e},isEndOfStream(){return t}}}getAvailableMessages(){let e=this.messageBuffer;this.messageBuffer=[];let t=this.isEndOfStream;return{getMessages(){return e},isEndOfStream(){return t}}}encode({headers:e,body:t}){let s=this.headerMarshaller.format(e),n=s.byteLength+t.byteLength+16,i=new Uint8Array(n),y=new DataView(i.buffer,i.byteOffset,i.byteLength),S=new Fi.Crc32;return y.setUint32(0,n,!1),y.setUint32(4,s.byteLength,!1),y.setUint32(8,S.update(i.subarray(0,8)).digest(),!1),i.set(s,12),i.set(t,s.byteLength+12),y.setUint32(n-4,S.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){let{headers:t,body:s}=Hh(e);return{headers:this.headerMarshaller.parse(t),body:s}}formatHeaders(e){return this.headerMarshaller.format(e)}}class Pi{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.inputStream)yield this.options.decoder.decode(e)}}class zi{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.messageStream)yield this.options.encoder.encode(e);if(this.options.includeEndFrame)yield new Uint8Array(0)}}class Vi{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.messageStream){let t=await this.options.deserializer(e);if(t===void 0)continue;yield t}}}class xi{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.inputStream)yield this.options.serializer(e)}}Lh.EventStreamCodec=Li;Lh.HeaderMarshaller=gs;Lh.Int64=De;Lh.MessageDecoderStream=Pi;Lh.MessageEncoderStream=zi;Lh.SmithyMessageDecoderStream=Vi;Lh.SmithyMessageEncoderStream=xi});var Ji=k((Xh)=>{var Ve=Yi();function Kh(e){let t=0,s=0,n=null,i=null,y=(d)=>{if(typeof d!=="number")throw Error("Attempted to allocate an event message where size was not a number: "+d);t=d,s=4,n=new Uint8Array(d),new DataView(n.buffer).setUint32(0,d,!1)},S=async function*(){let d=e[Symbol.asyncIterator]();while(!0){let{value:D,done:H}=await d.next();if(H){if(!t)return;else if(t===s)yield n;else throw Error("Truncated event message received.");return}let f=D.length,W=0;while(W<f){if(!n){let os=f-W;if(!i)i=new Uint8Array(4);let Z=Math.min(4-s,os);if(i.set(D.slice(W,W+Z),s),s+=Z,W+=Z,s<4)break;y(new DataView(i.buffer).getUint32(0,!1)),i=null}let Pe=Math.min(t-s,f-W);if(n.set(D.slice(W,W+Pe),s),s+=Pe,W+=Pe,t&&t===s)yield n,n=null,t=0,s=0}}};return{[Symbol.asyncIterator]:S}}function mh(e,t){return async function(s){let{value:n}=s.headers[":message-type"];if(n==="error"){let i=Error(s.headers[":error-message"].value||"UnknownError");throw i.name=s.headers[":error-code"].value,i}else if(n==="exception"){let i=s.headers[":exception-type"].value,y={[i]:s},S=await e(y);if(S.$unknown){let d=Error(t(s.body));throw d.name=i,d}throw S[i]}else if(n==="event"){let i={[s.headers[":event-type"].value]:s},y=await e(i);if(y.$unknown)return;return y}else throw Error(`Unrecognizable event type: ${s.headers[":event-type"].value}`)}}class Ds{eventStreamCodec;utfEncoder;constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Ve.EventStreamCodec(e,t),this.utfEncoder=e}deserialize(e,t){let s=Kh(e);return new Ve.SmithyMessageDecoderStream({messageStream:new Ve.MessageDecoderStream({inputStream:s,decoder:this.eventStreamCodec}),deserializer:mh(t,this.utfEncoder)})}serialize(e,t){return new Ve.MessageEncoderStream({messageStream:new Ve.SmithyMessageEncoderStream({inputStream:e,serializer:t}),encoder:this.eventStreamCodec,includeEndFrame:!0})}}var Qh=(e)=>new Ds(e);Xh.EventStreamMarshaller=Ds;Xh.eventStreamSerdeProvider=Qh});var Gi=k((rc)=>{var _h=Ji(),ec=Ce("stream");async function*tc(e){let t=!1,s=!1,n=[];e.on("error",(i)=>{if(!t)t=!0;if(i)throw i}),e.on("data",(i)=>{n.push(i)}),e.on("end",()=>{t=!0});while(!s){let i=await new Promise((y)=>setTimeout(()=>y(n.shift()),0));if(i)yield i;s=t&&n.length===0}}class Rs{universalMarshaller;constructor({utf8Encoder:e,utf8Decoder:t}){this.universalMarshaller=new _h.EventStreamMarshaller({utf8Decoder:t,utf8Encoder:e})}deserialize(e,t){let s=typeof e[Symbol.asyncIterator]==="function"?e:tc(e);return this.universalMarshaller.deserialize(s,t)}serialize(e,t){return ec.Readable.from(this.universalMarshaller.serialize(e,t))}}var sc=(e)=>new Rs(e);rc.EventStreamMarshaller=Rs;rc.eventStreamSerdeProvider=sc});var au=k((uu)=>{Object.defineProperty(uu,"__esModule",{value:!0});uu.ruleSet=void 0;var ru="required",Y="fn",J="argv",ke="ref",Ki=!0,mi="isSet",Ye="booleanEquals",Re="error",xe="endpoint",C="tree",ks="PartitionResult",Qi={[ru]:!1,type:"string"},Xi={[ru]:!0,default:!1,type:"boolean"},Zi={[ke]:"Endpoint"},nu={[Y]:Ye,[J]:[{[ke]:"UseFIPS"},!0]},iu={[Y]:Ye,[J]:[{[ke]:"UseDualStack"},!0]},x={},Ci={[Y]:"getAttr",[J]:[{[ke]:ks},"supportsFIPS"]},_i={[Y]:Ye,[J]:[!0,{[Y]:"getAttr",[J]:[{[ke]:ks},"supportsDualStack"]}]},eu=[nu],tu=[iu],su=[{[ke]:"Region"}],uc={version:"1.0",parameters:{Region:Qi,UseDualStack:Xi,UseFIPS:Xi,Endpoint:Qi},rules:[{conditions:[{[Y]:mi,[J]:[Zi]}],rules:[{conditions:eu,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:Re},{conditions:tu,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:Re},{endpoint:{url:Zi,properties:x,headers:x},type:xe}],type:C},{conditions:[{[Y]:mi,[J]:su}],rules:[{conditions:[{[Y]:"aws.partition",[J]:su,assign:ks}],rules:[{conditions:[nu,iu],rules:[{conditions:[{[Y]:Ye,[J]:[Ki,Ci]},_i],rules:[{endpoint:{url:"https://lambda-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:x,headers:x},type:xe}],type:C},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:Re}],type:C},{conditions:eu,rules:[{conditions:[{[Y]:Ye,[J]:[Ci,Ki]}],rules:[{endpoint:{url:"https://lambda-fips.{Region}.{PartitionResult#dnsSuffix}",properties:x,headers:x},type:xe}],type:C},{error:"FIPS is enabled but this partition does not support FIPS",type:Re}],type:C},{conditions:tu,rules:[{conditions:[_i],rules:[{endpoint:{url:"https://lambda.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:x,headers:x},type:xe}],type:C},{error:"DualStack is enabled but this partition does not support DualStack",type:Re}],type:C},{endpoint:{url:"https://lambda.{Region}.{PartitionResult#dnsSuffix}",properties:x,headers:x},type:xe}],type:C}],type:C},{error:"Invalid Configuration: Missing Region",type:Re}]};uu.ruleSet=uc});var wu=k((hu)=>{Object.defineProperty(hu,"__esModule",{value:!0});hu.defaultEndpointResolver=void 0;var lc=yu(),Is=ou(),ac=au(),oc=new Is.EndpointCache({size:50,params:["Endpoint","Region","UseDualStack","UseFIPS"]}),yc=(e,t={})=>{return oc.get(e,()=>(0,Is.resolveEndpoint)(ac.ruleSet,{endpointParams:e,logger:t.logger}))};hu.defaultEndpointResolver=yc;Is.customEndpointFunctions.aws=lc.awsEndpointFunctions});var gu=k((Uu)=>{Object.defineProperty(Uu,"__esModule",{value:!0});Uu.getRuntimeConfig=void 0;var hc=Ae(),cc=pu(),wc=ne(),dc=Eu(),du=vu(),bu=Su(),bc=ws(),Sc=wu(),vc=(e)=>{return{apiVersion:"2015-03-31",base64Decoder:e?.base64Decoder??du.fromBase64,base64Encoder:e?.base64Encoder??du.toBase64,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??Sc.defaultEndpointResolver,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??bc.defaultLambdaHttpAuthSchemeProvider,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:(t)=>t.getIdentityProvider("aws.auth#sigv4"),signer:new hc.AwsSdkSigV4Signer}],logger:e?.logger??new wc.NoOpLogger,protocol:e?.protocol??new cc.AwsRestJsonProtocol({defaultNamespace:"com.amazonaws.lambda"}),serviceId:e?.serviceId??"Lambda",urlParser:e?.urlParser??dc.parseUrl,utf8Decoder:e?.utf8Decoder??bu.fromUtf8,utf8Encoder:e?.utf8Encoder??bu.toUtf8}};Uu.getRuntimeConfig=vc});var Tu=k((ju)=>{Object.defineProperty(ju,"__esModule",{value:!0});ju.getRuntimeConfig=void 0;var Ec=st(),pc=Ec.__importDefault(ti()),Du=Ae(),Uc=bs(),Ru=Mu(),rt=nt(),Ac=Gi(),gc=fu(),ku=it(),we=Ou(),Iu=$u(),Dc=qu(),Rc=Bu(),kc=gu(),Ic=ne(),$c=Wu(),Oc=ne(),Bc=(e)=>{(0,Oc.emitWarningIfUnsupportedVersion)(process.version);let t=(0,$c.resolveDefaultsModeConfig)(e),s=()=>t().then(Ic.loadConfigsForDefaultMode),n=(0,kc.getRuntimeConfig)(e);(0,Du.emitWarningIfUnsupportedVersion)(process.version);let i={profile:e?.profile,logger:n.logger};return{...n,...e,runtime:"node",defaultsMode:t,authSchemePreference:e?.authSchemePreference??(0,we.loadConfig)(Du.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS,i),bodyLengthChecker:e?.bodyLengthChecker??Dc.calculateBodyLength,credentialDefaultProvider:e?.credentialDefaultProvider??Uc.defaultProvider,defaultUserAgentProvider:e?.defaultUserAgentProvider??(0,Ru.createDefaultUserAgentProvider)({serviceId:n.serviceId,clientVersion:pc.default.version}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ac.eventStreamSerdeProvider,maxAttempts:e?.maxAttempts??(0,we.loadConfig)(ku.NODE_MAX_ATTEMPT_CONFIG_OPTIONS,e),region:e?.region??(0,we.loadConfig)(rt.NODE_REGION_CONFIG_OPTIONS,{...rt.NODE_REGION_CONFIG_FILE_OPTIONS,...i}),requestHandler:Iu.NodeHttpHandler.create(e?.requestHandler??s),retryMode:e?.retryMode??(0,we.loadConfig)({...ku.NODE_RETRY_MODE_CONFIG_OPTIONS,default:async()=>(await s()).retryMode||Rc.DEFAULT_RETRY_MODE},e),sha256:e?.sha256??gc.Hash.bind(null,"sha256"),streamCollector:e?.streamCollector??Iu.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??(0,we.loadConfig)(rt.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,i),useFipsEndpoint:e?.useFipsEndpoint??(0,we.loadConfig)(rt.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,i),userAgentAppId:e?.userAgentAppId??(0,we.loadConfig)(Ru.NODE_APP_ID_CONFIG_OPTIONS,i)}};ju.getRuntimeConfig=Bc});var Pu=k((Fc)=>{var ut=()=>{let e=new WeakSet;return(t,s)=>{if(typeof s==="object"&&s!==null){if(e.has(s))return"[Circular]";e.add(s)}return s}},Mc=(e)=>{return new Promise((t)=>setTimeout(t,e*1000))},Lu={minDelay:2,maxDelay:120};Fc.WaiterState=void 0;(function(e){e.ABORTED="ABORTED",e.FAILURE="FAILURE",e.SUCCESS="SUCCESS",e.RETRY="RETRY",e.TIMEOUT="TIMEOUT"})(Fc.WaiterState||(Fc.WaiterState={}));var fc=(e)=>{if(e.state===Fc.WaiterState.ABORTED){let t=Error(`${JSON.stringify({...e,reason:"Request was aborted"},ut())}`);throw t.name="AbortError",t}else if(e.state===Fc.WaiterState.TIMEOUT){let t=Error(`${JSON.stringify({...e,reason:"Waiter has timed out"},ut())}`);throw t.name="TimeoutError",t}else if(e.state!==Fc.WaiterState.SUCCESS)throw Error(`${JSON.stringify(e,ut())}`);return e},qc=(e,t,s,n)=>{if(n>s)return t;let i=e*2**(n-1);return Wc(e,i)},Wc=(e,t)=>e+Math.random()*(t-e),jc=async({minDelay:e,maxDelay:t,maxWaitTime:s,abortController:n,client:i,abortSignal:y},S,d)=>{let D={},{state:H,reason:f}=await d(i,S);if(f){let Z=Fu(f);D[Z]|=0,D[Z]+=1}if(H!==Fc.WaiterState.RETRY)return{state:H,reason:f,observedResponses:D};let W=1,Pe=Date.now()+s*1000,os=Math.log(t/e)/Math.log(2)+1;while(!0){if(n?.signal?.aborted||y?.aborted)return D["AbortController signal aborted."]|=0,D["AbortController signal aborted."]+=1,{state:Fc.WaiterState.ABORTED,observedResponses:D};let Z=qc(e,t,os,W);if(Date.now()+Z*1000>Pe)return{state:Fc.WaiterState.TIMEOUT,observedResponses:D};await Mc(Z);let{state:Xn,reason:ys}=await d(i,S);if(ys){let hs=Fu(ys);D[hs]|=0,D[hs]+=1}if(Xn!==Fc.WaiterState.RETRY)return{state:Xn,reason:ys,observedResponses:D};W+=1}},Fu=(e)=>{if(e?.$responseBodyText)return`Deserialization error for body: ${e.$responseBodyText}`;if(e?.$metadata?.httpStatusCode){if(e.$response||e.message)return`${e.$response.statusCode??e.$metadata.httpStatusCode??"Unknown"}: ${e.message}`;return`${e.$metadata.httpStatusCode}: OK`}return String(e?.message??JSON.stringify(e,ut())??"Unknown")},Nc=(e)=>{if(e.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if(e.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if(e.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if(e.maxWaitTime<=e.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${e.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${e.minDelay}] for this waiter`);else if(e.maxDelay<e.minDelay)throw Error(`WaiterConfiguration.maxDelay [${e.maxDelay}] must be greater than WaiterConfiguration.minDelay [${e.minDelay}] for this waiter`)},Hu=(e)=>{let t,s=new Promise((n)=>{if(t=()=>n({state:Fc.WaiterState.ABORTED}),typeof e.addEventListener==="function")e.addEventListener("abort",t);else e.onabort=t});return{clearListener(){if(typeof e.removeEventListener==="function")e.removeEventListener("abort",t)},aborted:s}},Tc=async(e,t,s)=>{let n={...Lu,...e};Nc(n);let i=[jc(n,t,s)],y=[];if(e.abortSignal){let{aborted:S,clearListener:d}=Hu(e.abortSignal);y.push(d),i.push(S)}if(e.abortController?.signal){let{aborted:S,clearListener:d}=Hu(e.abortController.signal);y.push(d),i.push(S)}return Promise.race(i).then((S)=>{for(let d of y)d();return S})};Fc.checkExceptions=fc;Fc.createWaiter=Tc;Fc.waiterServiceDefaults=Lu});var ro=k((Tn)=>{var zu=Xu(),zc=Zu(),Vc=Cu(),Vu=tl(),xc=nt(),N=el(),E=_u(),Yc=Zn(),Jc=sl(),l=rl(),xu=it(),u=ne(),Yu=ws(),Gc=Tu(),Ju=nl(),Gu=Qu(),v=Pu(),Kc=(e)=>{return Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:"lambda"})},a={UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}},mc=(e)=>{let{httpAuthSchemes:t,httpAuthSchemeProvider:s,credentials:n}=e;return{setHttpAuthScheme(i){let y=t.findIndex((S)=>S.schemeId===i.schemeId);if(y===-1)t.push(i);else t.splice(y,1,i)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(i){s=i},httpAuthSchemeProvider(){return s},setCredentials(i){n=i},credentials(){return n}}},Qc=(e)=>{return{httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()}},Xc=(e,t)=>{let s=Object.assign(Ju.getAwsRegionExtensionConfiguration(e),u.getDefaultExtensionConfiguration(e),Gu.getHttpHandlerExtensionConfiguration(e),mc(e));return t.forEach((n)=>n.configure(s)),Object.assign(e,Ju.resolveAwsRegionExtensionConfiguration(s),u.resolveDefaultRuntimeConfig(s),Gu.resolveHttpHandlerRuntimeConfig(s),Qc(s))};class T extends u.Client{config;constructor(...[e]){let t=Gc.getRuntimeConfig(e||{});super(t);this.initConfig=t;let s=Kc(t),n=Vu.resolveUserAgentConfig(s),i=xu.resolveRetryConfig(n),y=xc.resolveRegionConfig(i),S=zu.resolveHostHeaderConfig(y),d=l.resolveEndpointConfig(S),D=Yc.resolveEventStreamSerdeConfig(d),H=Yu.resolveHttpAuthSchemeConfig(D),f=Xc(H,e?.extensions||[]);this.config=f,this.middlewareStack.use(E.getSchemaSerdePlugin(this.config)),this.middlewareStack.use(Vu.getUserAgentPlugin(this.config)),this.middlewareStack.use(xu.getRetryPlugin(this.config)),this.middlewareStack.use(Jc.getContentLengthPlugin(this.config)),this.middlewareStack.use(zu.getHostHeaderPlugin(this.config)),this.middlewareStack.use(zc.getLoggerPlugin(this.config)),this.middlewareStack.use(Vc.getRecursionDetectionPlugin(this.config)),this.middlewareStack.use(N.getHttpAuthSchemeEndpointRuleSetPlugin(this.config,{httpAuthSchemeParametersProvider:Yu.defaultLambdaHttpAuthSchemeParametersProvider,identityProviderConfigProvider:async(W)=>new N.DefaultIdentityProviderConfig({"aws.auth#sigv4":W.credentials})})),this.middlewareStack.use(N.getHttpSigningPlugin(this.config))}destroy(){super.destroy()}}var p=class e extends u.ServiceException{constructor(t){super(t);Object.setPrototypeOf(this,e.prototype)}},il=class e extends p{name="InvalidParameterValueException";$fault="client";Type;constructor(t){super({name:"InvalidParameterValueException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},ul=class e extends p{name="PolicyLengthExceededException";$fault="client";Type;constructor(t){super({name:"PolicyLengthExceededException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},ll=class e extends p{name="PreconditionFailedException";$fault="client";Type;constructor(t){super({name:"PreconditionFailedException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},al=class e extends p{name="ResourceConflictException";$fault="client";Type;constructor(t){super({name:"ResourceConflictException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},ol=class e extends p{name="ResourceNotFoundException";$fault="client";Type;Message;constructor(t){super({name:"ResourceNotFoundException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},yl=class e extends p{name="ServiceException";$fault="server";Type;Message;constructor(t){super({name:"ServiceException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},hl=class e extends p{name="TooManyRequestsException";$fault="client";retryAfterSeconds;Type;Reason;constructor(t){super({name:"TooManyRequestsException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.retryAfterSeconds=t.retryAfterSeconds,this.Type=t.Type,this.Reason=t.Reason}},cl=class e extends p{name="ResourceInUseException";$fault="client";Type;Message;constructor(t){super({name:"ResourceInUseException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},wl=class e extends p{name="CodeSigningConfigNotFoundException";$fault="client";Type;Message;constructor(t){super({name:"CodeSigningConfigNotFoundException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},dl=class e extends p{name="CodeStorageExceededException";$fault="client";Type;constructor(t){super({name:"CodeStorageExceededException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},bl=class e extends p{name="CodeVerificationFailedException";$fault="client";Type;Message;constructor(t){super({name:"CodeVerificationFailedException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Sl=class e extends p{name="InvalidCodeSignatureException";$fault="client";Type;Message;constructor(t){super({name:"InvalidCodeSignatureException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},vl=class e extends p{name="EC2AccessDeniedException";$fault="server";Type;Message;constructor(t){super({name:"EC2AccessDeniedException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},El=class e extends p{name="EC2ThrottledException";$fault="server";Type;Message;constructor(t){super({name:"EC2ThrottledException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},pl=class e extends p{name="EC2UnexpectedException";$fault="server";Type;Message;EC2ErrorCode;constructor(t){super({name:"EC2UnexpectedException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message,this.EC2ErrorCode=t.EC2ErrorCode}},Ul=class e extends p{name="EFSIOException";$fault="client";Type;Message;constructor(t){super({name:"EFSIOException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Al=class e extends p{name="EFSMountConnectivityException";$fault="client";Type;Message;constructor(t){super({name:"EFSMountConnectivityException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},gl=class e extends p{name="EFSMountFailureException";$fault="client";Type;Message;constructor(t){super({name:"EFSMountFailureException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Dl=class e extends p{name="EFSMountTimeoutException";$fault="client";Type;Message;constructor(t){super({name:"EFSMountTimeoutException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Rl=class e extends p{name="ENILimitReachedException";$fault="server";Type;Message;constructor(t){super({name:"ENILimitReachedException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},kl=class e extends p{name="InvalidRequestContentException";$fault="client";Type;constructor(t){super({name:"InvalidRequestContentException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},Il=class e extends p{name="InvalidRuntimeException";$fault="server";Type;Message;constructor(t){super({name:"InvalidRuntimeException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},$l=class e extends p{name="InvalidSecurityGroupIDException";$fault="server";Type;Message;constructor(t){super({name:"InvalidSecurityGroupIDException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Ol=class e extends p{name="InvalidSubnetIDException";$fault="server";Type;Message;constructor(t){super({name:"InvalidSubnetIDException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Bl=class e extends p{name="InvalidZipFileException";$fault="server";Type;Message;constructor(t){super({name:"InvalidZipFileException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Ml=class e extends p{name="KMSAccessDeniedException";$fault="server";Type;Message;constructor(t){super({name:"KMSAccessDeniedException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},fl=class e extends p{name="KMSDisabledException";$fault="server";Type;Message;constructor(t){super({name:"KMSDisabledException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},ql=class e extends p{name="KMSInvalidStateException";$fault="server";Type;Message;constructor(t){super({name:"KMSInvalidStateException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Wl=class e extends p{name="KMSNotFoundException";$fault="server";Type;Message;constructor(t){super({name:"KMSNotFoundException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},jl=class e extends p{name="RecursiveInvocationException";$fault="client";Type;Message;constructor(t){super({name:"RecursiveInvocationException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Nl=class e extends p{name="RequestTooLargeException";$fault="client";Type;constructor(t){super({name:"RequestTooLargeException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},Tl=class e extends p{name="ResourceNotReadyException";$fault="server";Type;constructor(t){super({name:"ResourceNotReadyException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},Fl=class e extends p{name="SerializedRequestEntityTooLargeException";$fault="client";Type;constructor(t){super({name:"SerializedRequestEntityTooLargeException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},Hl=class e extends p{name="SnapStartException";$fault="client";Type;Message;constructor(t){super({name:"SnapStartException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Ll=class e extends p{name="SnapStartNotReadyException";$fault="client";Type;Message;constructor(t){super({name:"SnapStartNotReadyException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Pl=class e extends p{name="SnapStartTimeoutException";$fault="client";Type;Message;constructor(t){super({name:"SnapStartTimeoutException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},zl=class e extends p{name="SubnetIPAddressLimitReachedException";$fault="server";Type;Message;constructor(t){super({name:"SubnetIPAddressLimitReachedException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type,this.Message=t.Message}},Vl=class e extends p{name="UnsupportedMediaTypeException";$fault="client";Type;constructor(t){super({name:"UnsupportedMediaTypeException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},xl=class e extends p{name="ProvisionedConcurrencyConfigNotFoundException";$fault="client";Type;constructor(t){super({name:"ProvisionedConcurrencyConfigNotFoundException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Type=t.Type}},Yl="Action",Zc="AliasArn",Cc="AliasConfiguration",_c="AccessConfigs",ew="AllowCredentials",tw="AllowHeaders",Jl="AccountLimit",sw="ApplicationLogLevel",rw="AddLayerVersionPermission",nw="AddLayerVersionPermissionRequest",iw="AddLayerVersionPermissionResponse",uw="AliasList",lw="AllowMethods",ht="AmazonManagedKafkaEventSourceConfig",aw="AllowOrigins",Gl="ApplyOn",ct="AllowedPublishers",$s="AvailableProvisionedConcurrentExecutions",Os="AllocatedProvisionedConcurrentExecutions",ow="AddPermissionRequest",yw="AddPermissionResponse",hw="AddPermission",cw="AliasRoutingConfiguration",Ie="AuthType",Kl="AccountUsage",ww="AdditionalVersionWeights",dw="Aliases",Bs="Architectures",lt="Arn",bw="Attribute",Sw="Blob",Ms="BisectBatchOnFunctionError",vw="BlobStream",fs="BatchSize",ml="Concurrency",wt="CompatibleArchitectures",Ew="CreateAliasRequest",at="CompatibleArchitecture",pw="CreateAlias",Ql="ClientContext",Uw="CreateCodeSigningConfig",Aw="CreateCodeSigningConfigRequest",gw="CreateCodeSigningConfigResponse",qs="CreatedDate",Dw="ConcurrentExecutions",Rw="CreateEventSourceMapping",kw="CreateEventSourceMappingRequest",Iw="CreateFunction",$w="CreateFunctionRequest",Ow="CreateFunctionUrlConfig",Bw="CreateFunctionUrlConfigRequest",Mw="CreateFunctionUrlConfigResponse",Xl="ConsumerGroupId",fw="CollectionName",dt="CompatibleRuntimes",ot="CompatibleRuntime",Ws="CodeSize",bt="CodeSigningConfig",_="CodeSigningConfigArn",qw="CodeSigningConfigId",Ww="CodeSigningConfigList",jw="CodeSigningConfigNotFoundException",Nw="CodeSigningConfigs",Tw="CodeStorageExceededException",St="CodeSigningPolicies",Fw="CodeSizeUnzipped",Hw="CodeSizeZipped",js="CodeSha256",vt="CreationTime",Lw="Content-Type",Pw="CodeVerificationFailedException",be="Cors",Zl="Code",zw="Command",Vw="Configuration",Ns="Content",F="Description",xw="DeleteAlias",Yw="DeleteAliasRequest",Se="DestinationConfig",Jw="DeleteCodeSigningConfig",Gw="DeleteCodeSigningConfigRequest",Kw="DeleteCodeSigningConfigResponse",Et="DocumentDBEventSourceConfig",mw="DeleteEventSourceMapping",Qw="DeleteEventSourceMappingRequest",Xw="DeleteFunction",Zw="DeleteFunctionConcurrency",Cw="DeleteFunctionConcurrencyRequest",_w="DeleteFunctionCodeSigningConfig",ed="DeleteFunctionCodeSigningConfigRequest",td="DeleteFunctionEventInvokeConfig",sd="DeleteFunctionEventInvokeConfigRequest",rd="DeleteFunctionRequest",nd="DeleteFunctionUrlConfig",id="DeleteFunctionUrlConfigRequest",pt="DeadLetterConfig",ud="DeleteLayerVersion",ld="DeleteLayerVersionRequest",ad="DatabaseName",od="DeleteProvisionedConcurrencyConfig",yd="DeleteProvisionedConcurrencyConfigRequest",hd="DryRun",Cl="Destination",_l="Enabled",$e="ErrorCode",cd="EC2AccessDeniedException",wd="EC2ErrorCode",dd="EC2ThrottledException",bd="EC2UnexpectedException",Sd="ErrorDetails",vd="EnvironmentError",Ed="EFSIOException",pd="EFSMountConnectivityException",Ud="EFSMountFailureException",Ad="EFSMountTimeoutException",gd="ExposeHeaders",Dd="ENILimitReachedException",Rd="EntryPoint",kd="EnvironmentResponse",Id="EventRecordFormat",Ut="EphemeralStorage",yt="EventSourceArn",$d="EventSourceMappings",Od="EventSourceMappingArn",Bd="EventSourceMappingConfiguration",Md="EventSourceMappingsList",fd="EventSourceMappingMetricsConfig",qd="EventSourceToken",Wd="EventStream",ea="ExecutedVersion",jd="EnvironmentVariableName",Nd="EnvironmentVariableValue",Td="EnvironmentVariables",At="Environment",Ku="Endpoints",Ts="Error",Fd="Filter",G="FunctionArn",Hd="FunctionArns",Ld="FunctionCount",ta="FilterCriteriaError",Pd="FunctionCodeLocation",gt="FilterCriteria",zd="FunctionCode",Vd="FunctionConfiguration",xd="FullDocument",Yd="FunctionError",Jd="FunctionEventInvokeConfig",Gd="FunctionEventInvokeConfigList",Kd="FunctionEventInvokeConfigs",md="FilterList",Qd="FunctionList",w="FunctionName",Fs="FunctionResponseTypes",Hs="FileSystemConfigs",Xd="FileSystemConfigList",Zd="FileSystemConfig",Dt="FunctionUrl",Cd="FunctionUrlAuthType",_d="FunctionUrlConfig",eb="FunctionUrlConfigList",tb="FunctionUrlConfigs",de="FunctionVersion",sb="Filters",rb="Functions",nb="GetAlias",ib="GetAliasRequest",ub="GetAccountSettings",lb="GetAccountSettingsRequest",ab="GetAccountSettingsResponse",ob="GetCodeSigningConfig",yb="GetCodeSigningConfigRequest",hb="GetCodeSigningConfigResponse",cb="GetEventSourceMapping",wb="GetEventSourceMappingRequest",db="GetFunction",bb="GetFunctionConcurrency",Sb="GetFunctionConcurrencyRequest",vb="GetFunctionConcurrencyResponse",Eb="GetFunctionConfigurationRequest",pb="GetFunctionCodeSigningConfig",Ub="GetFunctionCodeSigningConfigRequest",Ab="GetFunctionCodeSigningConfigResponse",gb="GetFunctionConfiguration",Db="GetFunctionEventInvokeConfig",Rb="GetFunctionEventInvokeConfigRequest",kb="GetFunctionRequest",Ib="GetFunctionRecursionConfig",$b="GetFunctionRecursionConfigRequest",Ob="GetFunctionRecursionConfigResponse",Bb="GetFunctionResponse",Mb="GetFunctionUrlConfig",fb="GetFunctionUrlConfigRequest",qb="GetFunctionUrlConfigResponse",Wb="GetLayerVersion",jb="GetLayerVersionByArn",Nb="GetLayerVersionByArnRequest",Tb="GetLayerVersionPolicy",Fb="GetLayerVersionPolicyRequest",Hb="GetLayerVersionPolicyResponse",Lb="GetLayerVersionRequest",Pb="GetLayerVersionResponse",zb="GetPolicy",Vb="GetProvisionedConcurrencyConfig",xb="GetProvisionedConcurrencyConfigRequest",Yb="GetProvisionedConcurrencyConfigResponse",Jb="GetPolicyRequest",Gb="GetPolicyResponse",Kb="GetRuntimeManagementConfig",mb="GetRuntimeManagementConfigRequest",Qb="GetRuntimeManagementConfigResponse",Ls="Handler",Xb="Invoke",Zb="InvokeArgs",sa="Ipv6AllowedForDualStack",Cb="InvokeAsyncRequest",_b="InvokeAsyncResponse",e0="InvokeAsync",Rt="ImageConfig",t0="ImageConfigError",ra="ImageConfigResponse",s0="InvalidCodeSignatureException",r0="InvokeComplete",Oe="InvokeMode",n0="InvalidParameterValueException",i0="InvocationRequest",u0="InvalidRequestContentException",l0="InvalidRuntimeException",a0="InvokeResponseStreamUpdate",o0="InvocationResponse",y0="InvalidSecurityGroupIDException",h0="InvalidSubnetIDException",na="InvocationType",Ps="ImageUri",c0="InvokedViaFunctionUrl",w0="InvokeWithResponseStream",d0="InvokeWithResponseStreamCompleteEvent",b0="InvokeWithResponseStreamRequest",S0="InvokeWithResponseStreamResponseEvent",v0="InvokeWithResponseStreamResponse",E0="InvalidZipFileException",p0="KMSAccessDeniedException",U0="KMSDisabledException",A0="KMSInvalidStateException",Be="KMSKeyArn",g0="KMSNotFoundException",D0="KafkaSchemaRegistryAccessConfig",R0="KafkaSchemaRegistryAccessConfigList",k0="KafkaSchemaRegistryConfig",I0="KafkaSchemaValidationConfig",$0="KafkaSchemaValidationConfigList",kt="Layers",zs="LayerArn",O0="ListAliasesRequest",B0="ListAliasesResponse",M0="ListAliases",It="LoggingConfig",f0="ListCodeSigningConfigs",q0="ListCodeSigningConfigsRequest",W0="ListCodeSigningConfigsResponse",j0="ListEventSourceMappings",N0="ListEventSourceMappingsRequest",T0="ListEventSourceMappingsResponse",F0="LogFormat",H0="ListFunctionsByCodeSigningConfig",L0="ListFunctionsByCodeSigningConfigRequest",P0="ListFunctionsByCodeSigningConfigResponse",z0="ListFunctionEventInvokeConfigs",V0="ListFunctionEventInvokeConfigsRequest",x0="ListFunctionEventInvokeConfigsResponse",Y0="ListFunctionsRequest",J0="ListFunctionsResponse",G0="ListFunctionUrlConfigs",K0="ListFunctionUrlConfigsRequest",m0="ListFunctionUrlConfigsResponse",Q0="ListFunctions",X0="LogGroup",$t="LicenseInfo",Z0="LayersList",C0="LayersListItem",_0="ListLayersRequest",e1="ListLayersResponse",t1="ListLayerVersions",s1="ListLayerVersionsRequest",r1="ListLayerVersionsResponse",n1="ListLayers",ve="LastModified",i1="LocalMountPath",Vs="LastModifiedTime",u1="LatestMatchingVersion",ie="LayerName",l1="ListProvisionedConcurrencyConfigs",a1="ListProvisionedConcurrencyConfigsRequest",o1="ListProvisionedConcurrencyConfigsResponse",y1="LastProcessingResult",ia="LogResult",h1="LayersReferenceList",ua="LogType",c1="ListTagsRequest",w1="ListTagsResponse",d1="ListTags",b1="LastUpdateStatus",S1="LastUpdateStatusReason",v1="LastUpdateStatusReasonCode",E1="LayerVersions",xs="LayerVersionArn",p1="ListVersionsByFunction",U1="ListVersionsByFunctionRequest",A1="ListVersionsByFunctionResponse",g1="LayerVersionContentInput",D1="LayerVersionContentOutput",R1="LayerVersionsList",k1="LayerVersionsListItem",I1="Layer",la="Location",R="Message",$1="MaxAge",O1="MasterArn",Ys="MaximumBatchingWindowInSeconds",Js="MetricsConfig",B1="MaximumConcurrency",Gs="MaximumEventAgeInSeconds",$="MaxItems",M1="MinimumPollers",f1="MaximumPollers",mu="MasterRegion",Me="MaximumRetryAttempts",Ks="MaximumRecordAgeInSeconds",ms="MemorySize",O="Marker",q1="Metrics",aa="Mode",Je="Name",V="NextMarker",oa="OnFailure",W1="OrganizationId",ya="OnSuccess",j1="OptimizationStatus",ha="Principal",N1="PayloadChunk",T1="ProvisionedConcurrencyConfigs",F1="ProvisionedConcurrencyConfigList",H1="ProvisionedConcurrencyConfigListItem",L1="ProvisionedConcurrencyConfigNotFoundException",P1="ProvisionedConcurrentExecutions",Qs="ParallelizationFactor",z1="PutFunctionConcurrency",V1="PutFunctionConcurrencyRequest",x1="PutFunctionCodeSigningConfig",Y1="PutFunctionCodeSigningConfigRequest",J1="PutFunctionCodeSigningConfigResponse",G1="PreconditionFailedException",K1="PutFunctionEventInvokeConfig",m1="PutFunctionEventInvokeConfigRequest",Q1="PutFunctionRecursionConfig",X1="PutFunctionRecursionConfigRequest",Z1="PutFunctionRecursionConfigResponse",C1="PolicyLengthExceededException",_1="PublishLayerVersion",eS="PublishLayerVersionRequest",tS="PublishLayerVersionResponse",sS="PrincipalOrgID",Ot="ProvisionedPollerConfig",rS="PutProvisionedConcurrencyConfig",nS="PutProvisionedConcurrencyConfigRequest",iS="PutProvisionedConcurrencyConfigResponse",uS="PutRuntimeManagementConfig",lS="PutRuntimeManagementConfigRequest",aS="PutRuntimeManagementConfigResponse",ca="PackageType",oS="PublishVersion",yS="PublishVersionRequest",hS="Pattern",Bt="Payload",wa="Policy",da="Publish",b="Qualifier",ba="Queues",Xs="Runtime",cS="Retry-After",Zs="RoutingConfig",Cs="ReservedConcurrentExecutions",wS="ResourceConflictException",B="RevisionId",dS="RecursiveInvocationException",bS="ResolvedImageUri",SS="ResourceInUseException",_s="RecursiveLoop",vS="RemoveLayerVersionPermission",ES="RemoveLayerVersionPermissionRequest",pS="ResourceNotFoundException",US="ResourceNotReadyException",AS="RemovePermission",er="RequestedProvisionedConcurrentExecutions",gS="RemovePermissionRequest",DS="ResponseStreamContentType",RS="RepositoryType",kS="RequestTooLargeException",Mt="RuntimeVersionArn",Sa="RuntimeVersionConfig",IS="RuntimeVersionError",tr="Resource",$S="Reason",sr="Role",va="Statement",OS="SourceArn",ft="SourceAccessConfigurations",BS="SourceAccessConfiguration",MS="SourceAccount",rr="S3Bucket",qt="ScalingConfig",Ea="StatusCode",fS="ServiceException",pa="SecurityGroupIds",Wt="StatementId",qS="SubnetIPAddressLimitReachedException",Ua="SubnetIds",nr="SigningJobArn",ir="S3Key",ur="SourceKMSKeyArn",WS="SystemLogLevel",lr="SelfManagedEventSource",jt="SelfManagedKafkaEventSourceConfig",ar="S3ObjectVersion",Aa="StartingPosition",ga="StartingPositionTimestamp",jS="SigningProfileVersionArns",or="SigningProfileVersionArn",NS="StateReason",Da="SchemaRegistryConfig",TS="StateReasonCode",FS="SerializedRequestEntityTooLargeException",HS="SchemaRegistryURI",yr="StatusReason",LS="SensitiveString",PS="SnapStartException",zS="SnapStartNotReadyException",VS="SnapStartResponse",xS="SnapStartTimeoutException",Nt="SnapStart",YS="StateTransitionReason",JS="SchemaValidationConfigs",GS="Size",Ra="State",Tt="Status",U="Type",KS="TargetArn",Ft="TracingConfig",mS="TracingConfigResponse",ka="TotalCodeSize",hr="TenancyConfig",Ia="TagsError",$a="TenantId",QS="TenantIsolationMode",XS="TagKeys",ZS="TooManyRequestsException",CS="TagResource",_S="TagResourceRequest",cr="TumblingWindowInSeconds",fe="Tags",wr="Timeout",Oa="Topics",e8="UpdateAlias",t8="UntrustedArtifactOnDeployment",s8="UpdateAliasRequest",r8="UnreservedConcurrentExecutions",n8="UpdateCodeSigningConfig",i8="UpdateCodeSigningConfigRequest",u8="UpdateCodeSigningConfigResponse",l8="UpdateEventSourceMapping",a8="UpdateEventSourceMappingRequest",o8="UpdateFunctionCode",y8="UpdateFunctionCodeRequest",h8="UpdateFunctionConfigurationRequest",c8="UpdateFunctionConfiguration",w8="UpdateFunctionEventInvokeConfig",d8="UpdateFunctionEventInvokeConfigRequest",b8="UpdateFunctionUrlConfig",S8="UpdateFunctionUrlConfigRequest",v8="UpdateFunctionUrlConfigResponse",E8="UnsupportedMediaTypeException",p8="UntagResource",Ba="URI",dr="UpdateRuntimeOn",U8="UntagResourceRequest",Ht="UUID",Ma="Variables",Lt="VpcConfig",A8="VpcConfigResponse",g8="VpcId",Ge="VersionNumber",Pt="Version",D8="Versions",R8="WorkingDirectory",fa="X-Amz-Client-Context",qa="X-Amz-Executed-Version",k8="X-Amz-Function-Error",Wa="X-Amz-Invocation-Type",I8="X-Amz-Log-Result",ja="X-Amz-Log-Type",Na="X-Amz-Tenant-Id",br="ZipFile",I="client",A="error",$8="eventPayload",o="http",g="httpError",j="httpHeader",h="httpQuery",L="message",O8="retryAfterSeconds",Ta="streaming",q="server",Fa="smithy.ts.sdk.synthetic.com.amazonaws.lambda",B8="tagKeys",r="com.amazonaws.lambda",Ee=[0,r,Sw,8,21],M8=[0,r,vw,{[Ta]:1},42],f8=[0,r,jd,8,0],q8=[0,r,Nd,8,0],Sr=[0,r,LS,8,0],W8=[3,r,Jl,0,[ka,Fw,Hw,Dw,r8],[1,1,1,1,1]],j8=[3,r,Kl,0,[ka,Ld],[1,1]],N8=[3,r,nw,0,[ie,Ge,Wt,Yl,ha,W1,B],[[0,1],[1,1],0,0,0,0,[0,{[h]:B}]]],T8=[3,r,iw,0,[va,B],[0,0]],F8=[3,r,ow,0,[w,Wt,Yl,ha,OS,MS,qd,b,B,sS,Cd,c0],[[0,1],0,0,0,0,0,0,[0,{[h]:b}],0,0,0,2]],H8=[3,r,yw,0,[va],[0]],zt=[3,r,Cc,0,[Zc,Je,de,F,Zs,B],[0,0,0,0,()=>vr,0]],vr=[3,r,cw,0,[ww],[129]],Er=[3,r,ct,0,[jS],[64]],pr=[3,r,ht,0,[Xl,Da],[0,()=>za]],Vt=[3,r,bt,0,[qw,_,F,ct,St,ve],[0,0,0,()=>Er,()=>Ur,0]],L8=[-3,r,jw,{[A]:I,[g]:404},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(L8,wl);var Ur=[3,r,St,0,[t8],[0]],P8=[-3,r,Tw,{[A]:I,[g]:400},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(P8,dl);var z8=[-3,r,Pw,{[A]:I,[g]:400},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(z8,bl);var Ha=[3,r,ml,0,[Cs],[1]],qe=[3,r,be,0,[ew,tw,lw,aw,gd,$1],[2,64,64,64,64,1]],V8=[3,r,Ew,0,[w,Je,de,F,Zs],[[0,1],0,0,0,()=>vr]],x8=[3,r,Aw,0,[F,ct,St,fe],[0,()=>Er,()=>Ur,128]],Y8=[3,r,gw,0,[bt],[()=>Vt]],J8=[3,r,kw,0,[yt,w,_l,fs,gt,Ys,Qs,Aa,ga,Se,Ks,Ms,Me,fe,cr,Oa,ba,ft,lr,Fs,ht,jt,qt,Et,Be,Js,Ot],[0,0,2,1,()=>kr,1,1,0,4,()=>We,1,2,1,128,1,64,64,()=>qr,()=>Ya,64,()=>pr,()=>Mr,()=>Br,()=>gr,0,()=>Rr,()=>Or]],G8=[3,r,$w,0,[w,Xs,sr,Ls,Zl,F,wr,ms,da,Lt,ca,pt,At,Be,Ft,fe,kt,Hs,Rt,_,Bs,Ut,Nt,It,hr],[0,0,0,0,[()=>p4,0],0,1,1,2,()=>ma,0,()=>Ar,[()=>La,0],0,()=>Ka,128,64,()=>fr,()=>Ir,0,64,()=>Dr,()=>Ja,()=>$r,()=>Ga]],K8=[3,r,Bw,0,[w,b,Ie,be,Oe],[[0,1],[0,{[h]:b}],0,()=>qe,0]],m8=[3,r,Mw,0,[Dt,G,Ie,be,vt,Oe],[0,0,0,()=>qe,0,0]],Ar=[3,r,pt,0,[KS],[0]],Q8=[3,r,Yw,0,[w,Je],[[0,1],[0,1]]],X8=[3,r,Gw,0,[_],[[0,1]]],Z8=[3,r,Kw,0,[],[]],C8=[3,r,Qw,0,[Ht],[[0,1]]],_8=[3,r,ed,0,[w],[[0,1]]],e4=[3,r,Cw,0,[w],[[0,1]]],t4=[3,r,sd,0,[w,b],[[0,1],[0,{[h]:b}]]],s4=[3,r,rd,0,[w,b],[[0,1],[0,{[h]:b}]]],r4=[3,r,id,0,[w,b],[[0,1],[0,{[h]:b}]]],n4=[3,r,ld,0,[ie,Ge],[[0,1],[1,1]]],i4=[3,r,yd,0,[w,b],[[0,1],[0,{[h]:b}]]],We=[3,r,Se,0,[ya,oa],[()=>K6,()=>G6]],gr=[3,r,Et,0,[ad,fw,xd],[0,0,0]],u4=[-3,r,cd,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(u4,vl);var l4=[-3,r,dd,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(l4,El);var a4=[-3,r,bd,{[A]:q,[g]:502},[U,R,wd],[0,0,0]];E.TypeRegistry.for(r).registerError(a4,pl);var o4=[-3,r,Ed,{[A]:I,[g]:410},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(o4,Ul);var y4=[-3,r,pd,{[A]:I,[g]:408},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(y4,Al);var h4=[-3,r,Ud,{[A]:I,[g]:403},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(h4,gl);var c4=[-3,r,Ad,{[A]:I,[g]:408},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(c4,Dl);var w4=[-3,r,Dd,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(w4,Rl);var La=[3,r,At,0,[Ma],[[()=>Xa,0]]],d4=[3,r,vd,0,[$e,R],[0,[()=>Sr,0]]],b4=[3,r,kd,0,[Ma,Ts],[[()=>Xa,0],[()=>d4,0]]],Dr=[3,r,Ut,0,[GS],[1]],Ke=[3,r,Bd,0,[Ht,Aa,ga,fs,Ys,Qs,yt,gt,G,ve,y1,Ra,YS,Se,Oa,ba,ft,lr,Ks,Ms,Me,cr,Fs,ht,jt,qt,Et,Be,ta,Od,Js,Ot],[0,0,4,1,1,1,0,()=>kr,0,4,0,0,0,()=>We,64,64,()=>qr,()=>Ya,1,2,1,1,64,()=>pr,()=>Mr,()=>Br,()=>gr,0,()=>E4,0,()=>Rr,()=>Or]],Rr=[3,r,fd,0,[q1],[64]],S4=[3,r,Zd,0,[lt,i1],[0,0]],v4=[3,r,Fd,0,[hS],[0]],kr=[3,r,gt,0,[sb],[()=>Qv]],E4=[3,r,ta,0,[$e,R],[0,0]],p4=[3,r,zd,0,[br,rr,ir,ar,Ps,ur],[[()=>Ee,0],0,0,0,0,0]],U4=[3,r,Pd,0,[RS,la,Ps,bS,ur],[0,0,0,0,0]],pe=[3,r,Vd,0,[w,G,Xs,sr,Ls,Ws,F,wr,ms,ve,js,Pt,Lt,pt,At,Be,Ft,O1,B,kt,Ra,NS,TS,b1,S1,v1,Hs,ca,ra,or,nr,Bs,Ut,Nt,Sa,It,hr],[0,0,0,0,0,1,0,1,1,0,0,0,()=>Yv,()=>Ar,[()=>b4,0],0,()=>qv,0,0,()=>t3,0,0,0,0,0,0,()=>fr,0,[()=>Z4,0],0,0,64,()=>Dr,()=>kv,[()=>pv,0],()=>$r,()=>Ga]],xt=[3,r,Jd,0,[ve,G,Me,Gs,Se],[4,0,1,1,()=>We]],A4=[3,r,_d,0,[Dt,G,vt,Vs,be,Ie,Oe],[0,0,0,0,()=>qe,0,0]],g4=[3,r,lb,0,[],[]],D4=[3,r,ab,0,[Jl,Kl],[()=>W8,()=>j8]],R4=[3,r,ib,0,[w,Je],[[0,1],[0,1]]],k4=[3,r,yb,0,[_],[[0,1]]],I4=[3,r,hb,0,[bt],[()=>Vt]],$4=[3,r,wb,0,[Ht],[[0,1]]],O4=[3,r,Ub,0,[w],[[0,1]]],B4=[3,r,Ab,0,[_,w],[0,0]],M4=[3,r,Sb,0,[w],[[0,1]]],f4=[3,r,vb,0,[Cs],[1]],q4=[3,r,Eb,0,[w,b],[[0,1],[0,{[h]:b}]]],W4=[3,r,Rb,0,[w,b],[[0,1],[0,{[h]:b}]]],j4=[3,r,$b,0,[w],[[0,1]]],N4=[3,r,Ob,0,[_s],[0]],T4=[3,r,kb,0,[w,b],[[0,1],[0,{[h]:b}]]],F4=[3,r,Bb,0,[Vw,Zl,fe,Ia,ml],[[()=>pe,0],()=>U4,128,()=>Mv,()=>Ha]],H4=[3,r,fb,0,[w,b],[[0,1],[0,{[h]:b}]]],L4=[3,r,qb,0,[Dt,G,Ie,be,vt,Vs,Oe],[0,0,0,()=>qe,0,0,0]],P4=[3,r,Nb,0,[lt],[[0,{[h]:lt}]]],z4=[3,r,Fb,0,[ie,Ge],[[0,1],[1,1]]],V4=[3,r,Hb,0,[wa,B],[0,0]],x4=[3,r,Lb,0,[ie,Ge],[[0,1],[1,1]]],Pa=[3,r,Pb,0,[Ns,zs,xs,F,qs,Pt,dt,$t,wt],[()=>Va,0,0,0,0,1,64,0,64]],Y4=[3,r,Jb,0,[w,b],[[0,1],[0,{[h]:b}]]],J4=[3,r,Gb,0,[wa,B],[0,0]],G4=[3,r,xb,0,[w,b],[[0,1],[0,{[h]:b}]]],K4=[3,r,Yb,0,[er,$s,Os,Tt,yr,ve],[1,1,1,0,0,0]],m4=[3,r,mb,0,[w,b],[[0,1],[0,{[h]:b}]]],Q4=[3,r,Qb,0,[dr,Mt,G],[0,0,0]],Ir=[3,r,Rt,0,[Rd,zw,R8],[64,64,0]],X4=[3,r,t0,0,[$e,R],[0,[()=>Sr,0]]],Z4=[3,r,ra,0,[Rt,Ts],[()=>Ir,[()=>X4,0]]],C4=[-3,r,s0,{[A]:I,[g]:400},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(C4,Sl);var _4=[-3,r,n0,{[A]:I,[g]:400},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(_4,il);var e6=[-3,r,u0,{[A]:I,[g]:400},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(e6,kl);var t6=[-3,r,l0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(t6,Il);var s6=[-3,r,y0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(s6,$l);var r6=[-3,r,h0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(r6,Ol);var n6=[-3,r,E0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(n6,Bl);var i6=[3,r,i0,0,[w,na,ua,Ql,Bt,b,$a],[[0,1],[0,{[j]:Wa}],[0,{[j]:ja}],[0,{[j]:fa}],[()=>Ee,16],[0,{[h]:b}],[0,{[j]:Na}]]],u6=[3,r,o0,0,[Ea,Yd,ia,Bt,ea],[[1,32],[0,{[j]:k8}],[0,{[j]:I8}],[()=>Ee,16],[0,{[j]:qa}]]],l6=[3,r,Cb,0,[w,Zb],[[0,1],[()=>M8,16]]],a6=[3,r,_b,0,[Tt],[[1,32]]],o6=[3,r,a0,0,[Bt],[[()=>Ee,{[$8]:1}]]],y6=[3,r,d0,0,[$e,Sd,ia],[0,0,0]],h6=[3,r,b0,0,[w,na,ua,Ql,b,Bt,$a],[[0,1],[0,{[j]:Wa}],[0,{[j]:ja}],[0,{[j]:fa}],[0,{[h]:b}],[()=>Ee,16],[0,{[j]:Na}]]],c6=[3,r,v0,0,[Ea,ea,Wd,DS],[[1,32],[0,{[j]:qa}],[()=>n3,16],[0,{[j]:Lw}]]],w6=[3,r,D0,0,[U,Ba],[0,0]],za=[3,r,k0,0,[HS,Id,_c,JS],[0,0,()=>Cv,()=>_v]],d6=[3,r,I0,0,[bw],[0]],b6=[-3,r,p0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(b6,Ml);var S6=[-3,r,U0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(S6,fl);var v6=[-3,r,A0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(v6,ql);var E6=[-3,r,g0,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(E6,Wl);var p6=[3,r,I1,0,[lt,Ws,or,nr],[0,1,0,0]],U6=[3,r,C0,0,[ie,zs,u1],[0,0,()=>xa]],A6=[3,r,g1,0,[rr,ir,ar,br],[0,0,0,[()=>Ee,0]]],Va=[3,r,D1,0,[la,js,Ws,or,nr],[0,0,1,0,0]],xa=[3,r,k1,0,[xs,Pt,F,qs,dt,$t,wt],[0,1,0,0,64,0,64]],g6=[3,r,O0,0,[w,de,O,$],[[0,1],[0,{[h]:de}],[0,{[h]:O}],[1,{[h]:$}]]],D6=[3,r,B0,0,[V,dw],[0,()=>Gv]],R6=[3,r,q0,0,[O,$],[[0,{[h]:O}],[1,{[h]:$}]]],k6=[3,r,W0,0,[V,Nw],[0,()=>Kv]],I6=[3,r,N0,0,[yt,w,O,$],[[0,{[h]:yt}],[0,{[h]:w}],[0,{[h]:O}],[1,{[h]:$}]]],$6=[3,r,T0,0,[V,$d],[0,()=>mv]],O6=[3,r,V0,0,[w,O,$],[[0,1],[0,{[h]:O}],[1,{[h]:$}]]],B6=[3,r,x0,0,[Kd,V],[()=>Xv,0]],M6=[3,r,L0,0,[_,O,$],[[0,1],[0,{[h]:O}],[1,{[h]:$}]]],f6=[3,r,P0,0,[V,Hd],[0,64]],q6=[3,r,Y0,0,[mu,de,O,$],[[0,{[h]:mu}],[0,{[h]:de}],[0,{[h]:O}],[1,{[h]:$}]]],W6=[3,r,J0,0,[V,rb],[0,[()=>Qa,0]]],j6=[3,r,K0,0,[w,O,$],[[0,1],[0,{[h]:O}],[1,{[h]:$}]]],N6=[3,r,m0,0,[tb,V],[()=>Zv,0]],T6=[3,r,_0,0,[ot,O,$,at],[[0,{[h]:ot}],[0,{[h]:O}],[1,{[h]:$}],[0,{[h]:at}]]],F6=[3,r,e1,0,[V,kt],[0,()=>e3]],H6=[3,r,s1,0,[ot,ie,O,$,at],[[0,{[h]:ot}],[0,1],[0,{[h]:O}],[1,{[h]:$}],[0,{[h]:at}]]],L6=[3,r,r1,0,[V,E1],[0,()=>s3]],P6=[3,r,a1,0,[w,O,$],[[0,1],[0,{[h]:O}],[1,{[h]:$}]]],z6=[3,r,o1,0,[T1,V],[()=>r3,0]],V6=[3,r,c1,0,[tr],[[0,1]]],x6=[3,r,w1,0,[fe],[128]],Y6=[3,r,U1,0,[w,O,$],[[0,1],[0,{[h]:O}],[1,{[h]:$}]]],J6=[3,r,A1,0,[V,D8],[0,[()=>Qa,0]]],$r=[3,r,It,0,[F0,sw,WS,X0],[0,0,0,0]],G6=[3,r,oa,0,[Cl],[0]],K6=[3,r,ya,0,[Cl],[0]],m6=[-3,r,C1,{[A]:I,[g]:400},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(m6,ul);var Q6=[-3,r,G1,{[A]:I,[g]:412},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(Q6,ll);var X6=[3,r,H1,0,[G,er,$s,Os,Tt,yr,ve],[0,1,1,1,0,0,0]],Z6=[-3,r,L1,{[A]:I,[g]:404},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(Z6,xl);var Or=[3,r,Ot,0,[M1,f1],[1,1]],C6=[3,r,eS,0,[ie,F,Ns,dt,$t,wt],[[0,1],0,[()=>A6,0],64,0,64]],_6=[3,r,tS,0,[Ns,zs,xs,F,qs,Pt,dt,$t,wt],[()=>Va,0,0,0,0,1,64,0,64]],ev=[3,r,yS,0,[w,js,F,B],[[0,1],0,0,0]],tv=[3,r,Y1,0,[_,w],[0,[0,1]]],sv=[3,r,J1,0,[_,w],[0,0]],rv=[3,r,V1,0,[w,Cs],[[0,1],1]],nv=[3,r,m1,0,[w,b,Me,Gs,Se],[[0,1],[0,{[h]:b}],1,1,()=>We]],iv=[3,r,X1,0,[w,_s],[[0,1],0]],uv=[3,r,Z1,0,[_s],[0]],lv=[3,r,nS,0,[w,b,P1],[[0,1],[0,{[h]:b}],1]],av=[3,r,iS,0,[er,$s,Os,Tt,yr,ve],[1,1,1,0,0,0]],ov=[3,r,lS,0,[w,b,dr,Mt],[[0,1],[0,{[h]:b}],0,0]],yv=[3,r,aS,0,[dr,G,Mt],[0,0,0]],hv=[-3,r,dS,{[A]:I,[g]:400},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(hv,jl);var cv=[3,r,ES,0,[ie,Ge,Wt,B],[[0,1],[1,1],[0,1],[0,{[h]:B}]]],wv=[3,r,gS,0,[w,Wt,b,B],[[0,1],[0,1],[0,{[h]:b}],[0,{[h]:B}]]],dv=[-3,r,kS,{[A]:I,[g]:413},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(dv,Nl);var bv=[-3,r,wS,{[A]:I,[g]:409},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(bv,al);var Sv=[-3,r,SS,{[A]:I,[g]:400},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(Sv,cl);var vv=[-3,r,pS,{[A]:I,[g]:404},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(vv,ol);var Ev=[-3,r,US,{[A]:q,[g]:502},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(Ev,Tl);var pv=[3,r,Sa,0,[Mt,Ts],[0,[()=>Uv,0]]],Uv=[3,r,IS,0,[$e,R],[0,[()=>Sr,0]]],Br=[3,r,qt,0,[B1],[1]],Ya=[3,r,lr,0,[Ku],[[2,r,Ku,0,0,64]]],Mr=[3,r,jt,0,[Xl,Da],[0,()=>za]],Av=[-3,r,FS,{[A]:I,[g]:413},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(Av,Fl);var gv=[-3,r,fS,{[A]:q,[g]:500},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(gv,yl);var Ja=[3,r,Nt,0,[Gl],[0]],Dv=[-3,r,PS,{[A]:I,[g]:400},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(Dv,Hl);var Rv=[-3,r,zS,{[A]:I,[g]:409},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(Rv,Ll);var kv=[3,r,VS,0,[Gl,j1],[0,0]],Iv=[-3,r,xS,{[A]:I,[g]:408},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(Iv,Pl);var $v=[3,r,BS,0,[U,Ba],[0,0]],Ov=[-3,r,qS,{[A]:q,[g]:502},[U,R],[0,0]];E.TypeRegistry.for(r).registerError(Ov,zl);var Bv=[3,r,_S,0,[tr,fe],[[0,1],128]],Mv=[3,r,Ia,0,[$e,R],[0,0]],Ga=[3,r,hr,0,[QS],[0]],fv=[-3,r,ZS,{[A]:I,[g]:429},[O8,U,L,$S],[[0,{[j]:cS}],0,0,0]];E.TypeRegistry.for(r).registerError(fv,hl);var Ka=[3,r,Ft,0,[aa],[0]],qv=[3,r,mS,0,[aa],[0]],Wv=[-3,r,E8,{[A]:I,[g]:415},[U,L],[0,0]];E.TypeRegistry.for(r).registerError(Wv,Vl);var jv=[3,r,U8,0,[tr,XS],[[0,1],[64,{[h]:B8}]]],Nv=[3,r,s8,0,[w,Je,de,F,Zs,B],[[0,1],[0,1],0,0,()=>vr,0]],Tv=[3,r,i8,0,[_,F,ct,St],[[0,1],0,()=>Er,()=>Ur]],Fv=[3,r,u8,0,[bt],[()=>Vt]],Hv=[3,r,a8,0,[Ht,w,_l,fs,gt,Ys,Se,Ks,Ms,Me,Qs,ft,cr,Fs,qt,ht,jt,Et,Be,Js,Ot],[[0,1],0,2,1,()=>kr,1,()=>We,1,2,1,1,()=>qr,1,64,()=>Br,()=>pr,()=>Mr,()=>gr,0,()=>Rr,()=>Or]],Lv=[3,r,y8,0,[w,br,rr,ir,ar,Ps,da,hd,B,Bs,ur],[[0,1],[()=>Ee,0],0,0,0,0,2,2,0,64,0]],Pv=[3,r,h8,0,[w,sr,Ls,F,wr,ms,Lt,At,Xs,pt,Be,Ft,B,kt,Hs,Rt,Ut,Nt,It],[[0,1],0,0,0,1,1,()=>ma,[()=>La,0],0,()=>Ar,0,()=>Ka,0,64,()=>fr,()=>Ir,()=>Dr,()=>Ja,()=>$r]],zv=[3,r,d8,0,[w,b,Me,Gs,Se],[[0,1],[0,{[h]:b}],1,1,()=>We]],Vv=[3,r,S8,0,[w,b,Ie,be,Oe],[[0,1],[0,{[h]:b}],0,()=>qe,0]],xv=[3,r,v8,0,[Dt,G,Ie,be,vt,Vs,Oe],[0,0,0,()=>qe,0,0,0]],ma=[3,r,Lt,0,[Ua,pa,sa],[64,64,2]],Yv=[3,r,A8,0,[Ua,pa,g8,sa],[64,64,0,2]],P="unit",Jv=[-3,Fa,"LambdaServiceException",0,[],[]];E.TypeRegistry.for(Fa).registerError(Jv,p);var Gv=[1,r,uw,0,()=>zt],Kv=[1,r,Ww,0,()=>Vt],mv=[1,r,Md,0,()=>Ke],fr=[1,r,Xd,0,()=>S4],Qv=[1,r,md,0,()=>v4],Xv=[1,r,Gd,0,()=>xt],Qa=[1,r,Qd,0,[()=>pe,0]],Zv=[1,r,eb,0,()=>A4],Cv=[1,r,R0,0,()=>w6],_v=[1,r,$0,0,()=>d6],e3=[1,r,Z0,0,()=>U6],t3=[1,r,h1,0,()=>p6],s3=[1,r,R1,0,()=>xa],r3=[1,r,F1,0,()=>X6],qr=[1,r,ft,0,()=>$v],Xa=[2,r,Td,8,[()=>f8,0],[()=>q8,0]],n3=[3,r,S0,{[Ta]:1},[N1,r0],[[()=>o6,0],()=>y6]],i3=[9,r,rw,{[o]:["POST","/2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy",201]},()=>N8,()=>T8],u3=[9,r,hw,{[o]:["POST","/2015-03-31/functions/{FunctionName}/policy",201]},()=>F8,()=>H8],l3=[9,r,pw,{[o]:["POST","/2015-03-31/functions/{FunctionName}/aliases",201]},()=>V8,()=>zt],a3=[9,r,Uw,{[o]:["POST","/2020-04-22/code-signing-configs",201]},()=>x8,()=>Y8],o3=[9,r,Rw,{[o]:["POST","/2015-03-31/event-source-mappings",202]},()=>J8,()=>Ke],y3=[9,r,Iw,{[o]:["POST","/2015-03-31/functions",201]},()=>G8,()=>pe],h3=[9,r,Ow,{[o]:["POST","/2021-10-31/functions/{FunctionName}/url",201]},()=>K8,()=>m8],c3=[9,r,xw,{[o]:["DELETE","/2015-03-31/functions/{FunctionName}/aliases/{Name}",204]},()=>Q8,()=>P],w3=[9,r,Jw,{[o]:["DELETE","/2020-04-22/code-signing-configs/{CodeSigningConfigArn}",204]},()=>X8,()=>Z8],d3=[9,r,mw,{[o]:["DELETE","/2015-03-31/event-source-mappings/{UUID}",202]},()=>C8,()=>Ke],b3=[9,r,Xw,{[o]:["DELETE","/2015-03-31/functions/{FunctionName}",204]},()=>s4,()=>P],S3=[9,r,_w,{[o]:["DELETE","/2020-06-30/functions/{FunctionName}/code-signing-config",204]},()=>_8,()=>P],v3=[9,r,Zw,{[o]:["DELETE","/2017-10-31/functions/{FunctionName}/concurrency",204]},()=>e4,()=>P],E3=[9,r,td,{[o]:["DELETE","/2019-09-25/functions/{FunctionName}/event-invoke-config",204]},()=>t4,()=>P],p3=[9,r,nd,{[o]:["DELETE","/2021-10-31/functions/{FunctionName}/url",204]},()=>r4,()=>P],U3=[9,r,ud,{[o]:["DELETE","/2018-10-31/layers/{LayerName}/versions/{VersionNumber}",204]},()=>n4,()=>P],A3=[9,r,od,{[o]:["DELETE","/2019-09-30/functions/{FunctionName}/provisioned-concurrency",204]},()=>i4,()=>P],g3=[9,r,ub,{[o]:["GET","/2016-08-19/account-settings",200]},()=>g4,()=>D4],D3=[9,r,nb,{[o]:["GET","/2015-03-31/functions/{FunctionName}/aliases/{Name}",200]},()=>R4,()=>zt],R3=[9,r,ob,{[o]:["GET","/2020-04-22/code-signing-configs/{CodeSigningConfigArn}",200]},()=>k4,()=>I4],k3=[9,r,cb,{[o]:["GET","/2015-03-31/event-source-mappings/{UUID}",200]},()=>$4,()=>Ke],I3=[9,r,db,{[o]:["GET","/2015-03-31/functions/{FunctionName}",200]},()=>T4,()=>F4],$3=[9,r,pb,{[o]:["GET","/2020-06-30/functions/{FunctionName}/code-signing-config",200]},()=>O4,()=>B4],O3=[9,r,bb,{[o]:["GET","/2019-09-30/functions/{FunctionName}/concurrency",200]},()=>M4,()=>f4],B3=[9,r,gb,{[o]:["GET","/2015-03-31/functions/{FunctionName}/configuration",200]},()=>q4,()=>pe],M3=[9,r,Db,{[o]:["GET","/2019-09-25/functions/{FunctionName}/event-invoke-config",200]},()=>W4,()=>xt],f3=[9,r,Ib,{[o]:["GET","/2024-08-31/functions/{FunctionName}/recursion-config",200]},()=>j4,()=>N4],q3=[9,r,Mb,{[o]:["GET","/2021-10-31/functions/{FunctionName}/url",200]},()=>H4,()=>L4],W3=[9,r,Wb,{[o]:["GET","/2018-10-31/layers/{LayerName}/versions/{VersionNumber}",200]},()=>x4,()=>Pa],j3=[9,r,jb,{[o]:["GET","/2018-10-31/layers?find=LayerVersion",200]},()=>P4,()=>Pa],N3=[9,r,Tb,{[o]:["GET","/2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy",200]},()=>z4,()=>V4],T3=[9,r,zb,{[o]:["GET","/2015-03-31/functions/{FunctionName}/policy",200]},()=>Y4,()=>J4],F3=[9,r,Vb,{[o]:["GET","/2019-09-30/functions/{FunctionName}/provisioned-concurrency",200]},()=>G4,()=>K4],H3=[9,r,Kb,{[o]:["GET","/2021-07-20/functions/{FunctionName}/runtime-management-config",200]},()=>m4,()=>Q4],L3=[9,r,Xb,{[o]:["POST","/2015-03-31/functions/{FunctionName}/invocations",200]},()=>i6,()=>u6],P3=[9,r,e0,{[o]:["POST","/2014-11-13/functions/{FunctionName}/invoke-async",202]},()=>l6,()=>a6],z3=[9,r,w0,{[o]:["POST","/2021-11-15/functions/{FunctionName}/response-streaming-invocations",200]},()=>h6,()=>c6],V3=[9,r,M0,{[o]:["GET","/2015-03-31/functions/{FunctionName}/aliases",200]},()=>g6,()=>D6],x3=[9,r,f0,{[o]:["GET","/2020-04-22/code-signing-configs",200]},()=>R6,()=>k6],Y3=[9,r,j0,{[o]:["GET","/2015-03-31/event-source-mappings",200]},()=>I6,()=>$6],J3=[9,r,z0,{[o]:["GET","/2019-09-25/functions/{FunctionName}/event-invoke-config/list",200]},()=>O6,()=>B6],G3=[9,r,Q0,{[o]:["GET","/2015-03-31/functions",200]},()=>q6,()=>W6],K3=[9,r,H0,{[o]:["GET","/2020-04-22/code-signing-configs/{CodeSigningConfigArn}/functions",200]},()=>M6,()=>f6],m3=[9,r,G0,{[o]:["GET","/2021-10-31/functions/{FunctionName}/urls",200]},()=>j6,()=>N6],Q3=[9,r,n1,{[o]:["GET","/2018-10-31/layers",200]},()=>T6,()=>F6],X3=[9,r,t1,{[o]:["GET","/2018-10-31/layers/{LayerName}/versions",200]},()=>H6,()=>L6],Z3=[9,r,l1,{[o]:["GET","/2019-09-30/functions/{FunctionName}/provisioned-concurrency?List=ALL",200]},()=>P6,()=>z6],C3=[9,r,d1,{[o]:["GET","/2017-03-31/tags/{Resource}",200]},()=>V6,()=>x6],_3=[9,r,p1,{[o]:["GET","/2015-03-31/functions/{FunctionName}/versions",200]},()=>Y6,()=>J6],eE=[9,r,_1,{[o]:["POST","/2018-10-31/layers/{LayerName}/versions",201]},()=>C6,()=>_6],tE=[9,r,oS,{[o]:["POST","/2015-03-31/functions/{FunctionName}/versions",201]},()=>ev,()=>pe],sE=[9,r,x1,{[o]:["PUT","/2020-06-30/functions/{FunctionName}/code-signing-config",200]},()=>tv,()=>sv],rE=[9,r,z1,{[o]:["PUT","/2017-10-31/functions/{FunctionName}/concurrency",200]},()=>rv,()=>Ha],nE=[9,r,K1,{[o]:["PUT","/2019-09-25/functions/{FunctionName}/event-invoke-config",200]},()=>nv,()=>xt],iE=[9,r,Q1,{[o]:["PUT","/2024-08-31/functions/{FunctionName}/recursion-config",200]},()=>iv,()=>uv],uE=[9,r,rS,{[o]:["PUT","/2019-09-30/functions/{FunctionName}/provisioned-concurrency",202]},()=>lv,()=>av],lE=[9,r,uS,{[o]:["PUT","/2021-07-20/functions/{FunctionName}/runtime-management-config",200]},()=>ov,()=>yv],aE=[9,r,vS,{[o]:["DELETE","/2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy/{StatementId}",204]},()=>cv,()=>P],oE=[9,r,AS,{[o]:["DELETE","/2015-03-31/functions/{FunctionName}/policy/{StatementId}",204]},()=>wv,()=>P],yE=[9,r,CS,{[o]:["POST","/2017-03-31/tags/{Resource}",204]},()=>Bv,()=>P],hE=[9,r,p8,{[o]:["DELETE","/2017-03-31/tags/{Resource}",204]},()=>jv,()=>P],cE=[9,r,e8,{[o]:["PUT","/2015-03-31/functions/{FunctionName}/aliases/{Name}",200]},()=>Nv,()=>zt],wE=[9,r,n8,{[o]:["PUT","/2020-04-22/code-signing-configs/{CodeSigningConfigArn}",200]},()=>Tv,()=>Fv],dE=[9,r,l8,{[o]:["PUT","/2015-03-31/event-source-mappings/{UUID}",202]},()=>Hv,()=>Ke],bE=[9,r,o8,{[o]:["PUT","/2015-03-31/functions/{FunctionName}/code",200]},()=>Lv,()=>pe],SE=[9,r,c8,{[o]:["PUT","/2015-03-31/functions/{FunctionName}/configuration",200]},()=>Pv,()=>pe],vE=[9,r,w8,{[o]:["POST","/2019-09-25/functions/{FunctionName}/event-invoke-config",200]},()=>zv,()=>xt],EE=[9,r,b8,{[o]:["PUT","/2021-10-31/functions/{FunctionName}/url",200]},()=>Vv,()=>xv];class Wr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","AddLayerVersionPermission",{}).n("LambdaClient","AddLayerVersionPermissionCommand").sc(i3).build(){}class jr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","AddPermission",{}).n("LambdaClient","AddPermissionCommand").sc(u3).build(){}class Nr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","CreateAlias",{}).n("LambdaClient","CreateAliasCommand").sc(l3).build(){}class Tr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","CreateCodeSigningConfig",{}).n("LambdaClient","CreateCodeSigningConfigCommand").sc(a3).build(){}class Fr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","CreateEventSourceMapping",{}).n("LambdaClient","CreateEventSourceMappingCommand").sc(o3).build(){}class Hr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","CreateFunction",{}).n("LambdaClient","CreateFunctionCommand").sc(y3).build(){}class Lr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","CreateFunctionUrlConfig",{}).n("LambdaClient","CreateFunctionUrlConfigCommand").sc(h3).build(){}class Pr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteAlias",{}).n("LambdaClient","DeleteAliasCommand").sc(c3).build(){}class zr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteCodeSigningConfig",{}).n("LambdaClient","DeleteCodeSigningConfigCommand").sc(w3).build(){}class Vr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteEventSourceMapping",{}).n("LambdaClient","DeleteEventSourceMappingCommand").sc(d3).build(){}class xr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteFunctionCodeSigningConfig",{}).n("LambdaClient","DeleteFunctionCodeSigningConfigCommand").sc(S3).build(){}class Yr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteFunction",{}).n("LambdaClient","DeleteFunctionCommand").sc(b3).build(){}class Jr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteFunctionConcurrency",{}).n("LambdaClient","DeleteFunctionConcurrencyCommand").sc(v3).build(){}class Gr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteFunctionEventInvokeConfig",{}).n("LambdaClient","DeleteFunctionEventInvokeConfigCommand").sc(E3).build(){}class Kr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteFunctionUrlConfig",{}).n("LambdaClient","DeleteFunctionUrlConfigCommand").sc(p3).build(){}class mr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteLayerVersion",{}).n("LambdaClient","DeleteLayerVersionCommand").sc(U3).build(){}class Qr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","DeleteProvisionedConcurrencyConfig",{}).n("LambdaClient","DeleteProvisionedConcurrencyConfigCommand").sc(A3).build(){}class Xr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetAccountSettings",{}).n("LambdaClient","GetAccountSettingsCommand").sc(g3).build(){}class Zr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetAlias",{}).n("LambdaClient","GetAliasCommand").sc(D3).build(){}class Cr extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetCodeSigningConfig",{}).n("LambdaClient","GetCodeSigningConfigCommand").sc(R3).build(){}class _r extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetEventSourceMapping",{}).n("LambdaClient","GetEventSourceMappingCommand").sc(k3).build(){}class en extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionCodeSigningConfig",{}).n("LambdaClient","GetFunctionCodeSigningConfigCommand").sc($3).build(){}class je extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunction",{}).n("LambdaClient","GetFunctionCommand").sc(I3).build(){}class tn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionConcurrency",{}).n("LambdaClient","GetFunctionConcurrencyCommand").sc(O3).build(){}class Ne extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionConfiguration",{}).n("LambdaClient","GetFunctionConfigurationCommand").sc(B3).build(){}class sn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionEventInvokeConfig",{}).n("LambdaClient","GetFunctionEventInvokeConfigCommand").sc(M3).build(){}class rn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionRecursionConfig",{}).n("LambdaClient","GetFunctionRecursionConfigCommand").sc(f3).build(){}class nn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetFunctionUrlConfig",{}).n("LambdaClient","GetFunctionUrlConfigCommand").sc(q3).build(){}class un extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetLayerVersionByArn",{}).n("LambdaClient","GetLayerVersionByArnCommand").sc(j3).build(){}class ln extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetLayerVersion",{}).n("LambdaClient","GetLayerVersionCommand").sc(W3).build(){}class an extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetLayerVersionPolicy",{}).n("LambdaClient","GetLayerVersionPolicyCommand").sc(N3).build(){}class on extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetPolicy",{}).n("LambdaClient","GetPolicyCommand").sc(T3).build(){}class yn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetProvisionedConcurrencyConfig",{}).n("LambdaClient","GetProvisionedConcurrencyConfigCommand").sc(F3).build(){}class hn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","GetRuntimeManagementConfig",{}).n("LambdaClient","GetRuntimeManagementConfigCommand").sc(H3).build(){}class cn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","InvokeAsync",{}).n("LambdaClient","InvokeAsyncCommand").sc(P3).build(){}class wn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","Invoke",{}).n("LambdaClient","InvokeCommand").sc(L3).build(){}class dn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","InvokeWithResponseStream",{eventStream:{output:!0}}).n("LambdaClient","InvokeWithResponseStreamCommand").sc(z3).build(){}class Yt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListAliases",{}).n("LambdaClient","ListAliasesCommand").sc(V3).build(){}class Jt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListCodeSigningConfigs",{}).n("LambdaClient","ListCodeSigningConfigsCommand").sc(x3).build(){}class Gt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListEventSourceMappings",{}).n("LambdaClient","ListEventSourceMappingsCommand").sc(Y3).build(){}class Kt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListFunctionEventInvokeConfigs",{}).n("LambdaClient","ListFunctionEventInvokeConfigsCommand").sc(J3).build(){}class mt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListFunctionsByCodeSigningConfig",{}).n("LambdaClient","ListFunctionsByCodeSigningConfigCommand").sc(K3).build(){}class Qt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListFunctions",{}).n("LambdaClient","ListFunctionsCommand").sc(G3).build(){}class Xt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListFunctionUrlConfigs",{}).n("LambdaClient","ListFunctionUrlConfigsCommand").sc(m3).build(){}class Zt extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListLayers",{}).n("LambdaClient","ListLayersCommand").sc(Q3).build(){}class Ct extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListLayerVersions",{}).n("LambdaClient","ListLayerVersionsCommand").sc(X3).build(){}class _t extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListProvisionedConcurrencyConfigs",{}).n("LambdaClient","ListProvisionedConcurrencyConfigsCommand").sc(Z3).build(){}class bn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListTags",{}).n("LambdaClient","ListTagsCommand").sc(C3).build(){}class es extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","ListVersionsByFunction",{}).n("LambdaClient","ListVersionsByFunctionCommand").sc(_3).build(){}class Sn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PublishLayerVersion",{}).n("LambdaClient","PublishLayerVersionCommand").sc(eE).build(){}class vn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PublishVersion",{}).n("LambdaClient","PublishVersionCommand").sc(tE).build(){}class En extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutFunctionCodeSigningConfig",{}).n("LambdaClient","PutFunctionCodeSigningConfigCommand").sc(sE).build(){}class pn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutFunctionConcurrency",{}).n("LambdaClient","PutFunctionConcurrencyCommand").sc(rE).build(){}class Un extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutFunctionEventInvokeConfig",{}).n("LambdaClient","PutFunctionEventInvokeConfigCommand").sc(nE).build(){}class An extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutFunctionRecursionConfig",{}).n("LambdaClient","PutFunctionRecursionConfigCommand").sc(iE).build(){}class gn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutProvisionedConcurrencyConfig",{}).n("LambdaClient","PutProvisionedConcurrencyConfigCommand").sc(uE).build(){}class Dn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","PutRuntimeManagementConfig",{}).n("LambdaClient","PutRuntimeManagementConfigCommand").sc(lE).build(){}class Rn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","RemoveLayerVersionPermission",{}).n("LambdaClient","RemoveLayerVersionPermissionCommand").sc(aE).build(){}class kn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","RemovePermission",{}).n("LambdaClient","RemovePermissionCommand").sc(oE).build(){}class In extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","TagResource",{}).n("LambdaClient","TagResourceCommand").sc(yE).build(){}class $n extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UntagResource",{}).n("LambdaClient","UntagResourceCommand").sc(hE).build(){}class On extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateAlias",{}).n("LambdaClient","UpdateAliasCommand").sc(cE).build(){}class Bn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateCodeSigningConfig",{}).n("LambdaClient","UpdateCodeSigningConfigCommand").sc(wE).build(){}class Mn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateEventSourceMapping",{}).n("LambdaClient","UpdateEventSourceMappingCommand").sc(dE).build(){}class fn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateFunctionCode",{}).n("LambdaClient","UpdateFunctionCodeCommand").sc(bE).build(){}class qn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateFunctionConfiguration",{}).n("LambdaClient","UpdateFunctionConfigurationCommand").sc(SE).build(){}class Wn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateFunctionEventInvokeConfig",{}).n("LambdaClient","UpdateFunctionEventInvokeConfigCommand").sc(vE).build(){}class jn extends u.Command.classBuilder().ep(a).m(function(e,t,s,n){return[l.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("AWSGirApiService","UpdateFunctionUrlConfig",{}).n("LambdaClient","UpdateFunctionUrlConfigCommand").sc(EE).build(){}var pE={AddLayerVersionPermissionCommand:Wr,AddPermissionCommand:jr,CreateAliasCommand:Nr,CreateCodeSigningConfigCommand:Tr,CreateEventSourceMappingCommand:Fr,CreateFunctionCommand:Hr,CreateFunctionUrlConfigCommand:Lr,DeleteAliasCommand:Pr,DeleteCodeSigningConfigCommand:zr,DeleteEventSourceMappingCommand:Vr,DeleteFunctionCommand:Yr,DeleteFunctionCodeSigningConfigCommand:xr,DeleteFunctionConcurrencyCommand:Jr,DeleteFunctionEventInvokeConfigCommand:Gr,DeleteFunctionUrlConfigCommand:Kr,DeleteLayerVersionCommand:mr,DeleteProvisionedConcurrencyConfigCommand:Qr,GetAccountSettingsCommand:Xr,GetAliasCommand:Zr,GetCodeSigningConfigCommand:Cr,GetEventSourceMappingCommand:_r,GetFunctionCommand:je,GetFunctionCodeSigningConfigCommand:en,GetFunctionConcurrencyCommand:tn,GetFunctionConfigurationCommand:Ne,GetFunctionEventInvokeConfigCommand:sn,GetFunctionRecursionConfigCommand:rn,GetFunctionUrlConfigCommand:nn,GetLayerVersionCommand:ln,GetLayerVersionByArnCommand:un,GetLayerVersionPolicyCommand:an,GetPolicyCommand:on,GetProvisionedConcurrencyConfigCommand:yn,GetRuntimeManagementConfigCommand:hn,InvokeCommand:wn,InvokeAsyncCommand:cn,InvokeWithResponseStreamCommand:dn,ListAliasesCommand:Yt,ListCodeSigningConfigsCommand:Jt,ListEventSourceMappingsCommand:Gt,ListFunctionEventInvokeConfigsCommand:Kt,ListFunctionsCommand:Qt,ListFunctionsByCodeSigningConfigCommand:mt,ListFunctionUrlConfigsCommand:Xt,ListLayersCommand:Zt,ListLayerVersionsCommand:Ct,ListProvisionedConcurrencyConfigsCommand:_t,ListTagsCommand:bn,ListVersionsByFunctionCommand:es,PublishLayerVersionCommand:Sn,PublishVersionCommand:vn,PutFunctionCodeSigningConfigCommand:En,PutFunctionConcurrencyCommand:pn,PutFunctionEventInvokeConfigCommand:Un,PutFunctionRecursionConfigCommand:An,PutProvisionedConcurrencyConfigCommand:gn,PutRuntimeManagementConfigCommand:Dn,RemoveLayerVersionPermissionCommand:Rn,RemovePermissionCommand:kn,TagResourceCommand:In,UntagResourceCommand:$n,UpdateAliasCommand:On,UpdateCodeSigningConfigCommand:Bn,UpdateEventSourceMappingCommand:Mn,UpdateFunctionCodeCommand:fn,UpdateFunctionConfigurationCommand:qn,UpdateFunctionEventInvokeConfigCommand:Wn,UpdateFunctionUrlConfigCommand:jn};class Nn extends T{}u.createAggregatedClient(pE,Nn);var UE=N.createPaginator(T,Yt,"Marker","NextMarker","MaxItems"),AE=N.createPaginator(T,Jt,"Marker","NextMarker","MaxItems"),gE=N.createPaginator(T,Gt,"Marker","NextMarker","MaxItems"),DE=N.createPaginator(T,Kt,"Marker","NextMarker","MaxItems"),RE=N.createPaginator(T,Xt,"Marker","NextMarker","MaxItems"),kE=N.createPaginator(T,mt,"Marker","NextMarker","MaxItems"),IE=N.createPaginator(T,Qt,"Marker","NextMarker","MaxItems"),$E=N.createPaginator(T,Ct,"Marker","NextMarker","MaxItems"),OE=N.createPaginator(T,Zt,"Marker","NextMarker","MaxItems"),BE=N.createPaginator(T,_t,"Marker","NextMarker","MaxItems"),ME=N.createPaginator(T,es,"Marker","NextMarker","MaxItems"),Za=async(e,t)=>{let s;try{let n=await e.send(new Ne(t));s=n;try{if((()=>{return n.State})()==="Active")return{state:v.WaiterState.SUCCESS,reason:s}}catch(i){}try{if((()=>{return n.State})()==="Failed")return{state:v.WaiterState.FAILURE,reason:s}}catch(i){}try{if((()=>{return n.State})()==="Pending")return{state:v.WaiterState.RETRY,reason:s}}catch(i){}}catch(n){s=n}return{state:v.WaiterState.RETRY,reason:s}},fE=async(e,t)=>{let s={minDelay:5,maxDelay:300};return v.createWaiter({...s,...e},t,Za)},qE=async(e,t)=>{let s={minDelay:5,maxDelay:300},n=await v.createWaiter({...s,...e},t,Za);return v.checkExceptions(n)},Ca=async(e,t)=>{let s;try{let n=await e.send(new je(t));s=n;try{if((()=>{return n.Configuration.State})()==="Active")return{state:v.WaiterState.SUCCESS,reason:s}}catch(i){}try{if((()=>{return n.Configuration.State})()==="Failed")return{state:v.WaiterState.FAILURE,reason:s}}catch(i){}try{if((()=>{return n.Configuration.State})()==="Pending")return{state:v.WaiterState.RETRY,reason:s}}catch(i){}}catch(n){s=n}return{state:v.WaiterState.RETRY,reason:s}},WE=async(e,t)=>{let s={minDelay:1,maxDelay:300};return v.createWaiter({...s,...e},t,Ca)},jE=async(e,t)=>{let s={minDelay:1,maxDelay:300},n=await v.createWaiter({...s,...e},t,Ca);return v.checkExceptions(n)},_a=async(e,t)=>{let s;try{return s=await e.send(new je(t)),{state:v.WaiterState.SUCCESS,reason:s}}catch(n){if(s=n,n.name&&n.name=="ResourceNotFoundException")return{state:v.WaiterState.RETRY,reason:s}}return{state:v.WaiterState.RETRY,reason:s}},NE=async(e,t)=>{let s={minDelay:1,maxDelay:20};return v.createWaiter({...s,...e},t,_a)},TE=async(e,t)=>{let s={minDelay:1,maxDelay:20},n=await v.createWaiter({...s,...e},t,_a);return v.checkExceptions(n)},eo=async(e,t)=>{let s;try{let n=await e.send(new Ne(t));s=n;try{if((()=>{return n.LastUpdateStatus})()==="Successful")return{state:v.WaiterState.SUCCESS,reason:s}}catch(i){}try{if((()=>{return n.LastUpdateStatus})()==="Failed")return{state:v.WaiterState.FAILURE,reason:s}}catch(i){}try{if((()=>{return n.LastUpdateStatus})()==="InProgress")return{state:v.WaiterState.RETRY,reason:s}}catch(i){}}catch(n){s=n}return{state:v.WaiterState.RETRY,reason:s}},FE=async(e,t)=>{let s={minDelay:5,maxDelay:300};return v.createWaiter({...s,...e},t,eo)},HE=async(e,t)=>{let s={minDelay:5,maxDelay:300},n=await v.createWaiter({...s,...e},t,eo);return v.checkExceptions(n)},to=async(e,t)=>{let s;try{let n=await e.send(new je(t));s=n;try{if((()=>{return n.Configuration.LastUpdateStatus})()==="Successful")return{state:v.WaiterState.SUCCESS,reason:s}}catch(i){}try{if((()=>{return n.Configuration.LastUpdateStatus})()==="Failed")return{state:v.WaiterState.FAILURE,reason:s}}catch(i){}try{if((()=>{return n.Configuration.LastUpdateStatus})()==="InProgress")return{state:v.WaiterState.RETRY,reason:s}}catch(i){}}catch(n){s=n}return{state:v.WaiterState.RETRY,reason:s}},LE=async(e,t)=>{let s={minDelay:1,maxDelay:300};return v.createWaiter({...s,...e},t,to)},PE=async(e,t)=>{let s={minDelay:1,maxDelay:300},n=await v.createWaiter({...s,...e},t,to);return v.checkExceptions(n)},so=async(e,t)=>{let s;try{let n=await e.send(new Ne(t));s=n;try{if((()=>{return n.State})()==="Active")return{state:v.WaiterState.SUCCESS,reason:s}}catch(i){}try{if((()=>{return n.State})()==="Failed")return{state:v.WaiterState.FAILURE,reason:s}}catch(i){}try{if((()=>{return n.State})()==="Pending")return{state:v.WaiterState.RETRY,reason:s}}catch(i){}}catch(n){s=n}return{state:v.WaiterState.RETRY,reason:s}},zE=async(e,t)=>{let s={minDelay:5,maxDelay:1560};return v.createWaiter({...s,...e},t,so)},VE=async(e,t)=>{let s={minDelay:5,maxDelay:1560},n=await v.createWaiter({...s,...e},t,so);return v.checkExceptions(n)},xE={CallerRateLimitExceeded:"CallerRateLimitExceeded",ConcurrentInvocationLimitExceeded:"ConcurrentInvocationLimitExceeded",ConcurrentSnapshotCreateLimitExceeded:"ConcurrentSnapshotCreateLimitExceeded",FunctionInvocationRateLimitExceeded:"FunctionInvocationRateLimitExceeded",ReservedFunctionConcurrentInvocationLimitExceeded:"ReservedFunctionConcurrentInvocationLimitExceeded",ReservedFunctionInvocationRateLimitExceeded:"ReservedFunctionInvocationRateLimitExceeded"},YE={AWS_IAM:"AWS_IAM",NONE:"NONE"},JE={BASIC_AUTH:"BASIC_AUTH",CLIENT_CERTIFICATE_TLS_AUTH:"CLIENT_CERTIFICATE_TLS_AUTH",SERVER_ROOT_CA_CERTIFICATE:"SERVER_ROOT_CA_CERTIFICATE"},GE={JSON:"JSON",SOURCE:"SOURCE"},KE={KEY:"KEY",VALUE:"VALUE"},mE={Debug:"DEBUG",Error:"ERROR",Fatal:"FATAL",Info:"INFO",Trace:"TRACE",Warn:"WARN"},QE={arm64:"arm64",x86_64:"x86_64"},XE={Enforce:"Enforce",Warn:"Warn"},ZE={Default:"Default",UpdateLookup:"UpdateLookup"},CE={ReportBatchItemFailures:"ReportBatchItemFailures"},_E={EventCount:"EventCount"},ep={KAFKA_BOOTSTRAP_SERVERS:"KAFKA_BOOTSTRAP_SERVERS"},tp={BASIC_AUTH:"BASIC_AUTH",CLIENT_CERTIFICATE_TLS_AUTH:"CLIENT_CERTIFICATE_TLS_AUTH",SASL_SCRAM_256_AUTH:"SASL_SCRAM_256_AUTH",SASL_SCRAM_512_AUTH:"SASL_SCRAM_512_AUTH",SERVER_ROOT_CA_CERTIFICATE:"SERVER_ROOT_CA_CERTIFICATE",VIRTUAL_HOST:"VIRTUAL_HOST",VPC_SECURITY_GROUP:"VPC_SECURITY_GROUP",VPC_SUBNET:"VPC_SUBNET"},sp={AT_TIMESTAMP:"AT_TIMESTAMP",LATEST:"LATEST",TRIM_HORIZON:"TRIM_HORIZON"},rp={Json:"JSON",Text:"Text"},np={Debug:"DEBUG",Info:"INFO",Warn:"WARN"},ip={Image:"Image",Zip:"Zip"},up={dotnet6:"dotnet6",dotnet8:"dotnet8",dotnetcore10:"dotnetcore1.0",dotnetcore20:"dotnetcore2.0",dotnetcore21:"dotnetcore2.1",dotnetcore31:"dotnetcore3.1",go1x:"go1.x",java11:"java11",java17:"java17",java21:"java21",java25:"java25",java8:"java8",java8al2:"java8.al2",nodejs:"nodejs",nodejs10x:"nodejs10.x",nodejs12x:"nodejs12.x",nodejs14x:"nodejs14.x",nodejs16x:"nodejs16.x",nodejs18x:"nodejs18.x",nodejs20x:"nodejs20.x",nodejs22x:"nodejs22.x",nodejs24x:"nodejs24.x",nodejs43:"nodejs4.3",nodejs43edge:"nodejs4.3-edge",nodejs610:"nodejs6.10",nodejs810:"nodejs8.10",provided:"provided",providedal2:"provided.al2",providedal2023:"provided.al2023",python27:"python2.7",python310:"python3.10",python311:"python3.11",python312:"python3.12",python313:"python3.13",python314:"python3.14",python36:"python3.6",python37:"python3.7",python38:"python3.8",python39:"python3.9",ruby25:"ruby2.5",ruby27:"ruby2.7",ruby32:"ruby3.2",ruby33:"ruby3.3",ruby34:"ruby3.4"},lp={None:"None",PublishedVersions:"PublishedVersions"},ap={PER_TENANT:"PER_TENANT"},op={Active:"Active",PassThrough:"PassThrough"},yp={Failed:"Failed",InProgress:"InProgress",Successful:"Successful"},hp={DisabledKMSKey:"DisabledKMSKey",EFSIOError:"EFSIOError",EFSMountConnectivityError:"EFSMountConnectivityError",EFSMountFailure:"EFSMountFailure",EFSMountTimeout:"EFSMountTimeout",EniLimitExceeded:"EniLimitExceeded",FunctionError:"FunctionError",ImageAccessDenied:"ImageAccessDenied",ImageDeleted:"ImageDeleted",InsufficientRolePermissions:"InsufficientRolePermissions",InternalError:"InternalError",InvalidConfiguration:"InvalidConfiguration",InvalidImage:"InvalidImage",InvalidRuntime:"InvalidRuntime",InvalidSecurityGroup:"InvalidSecurityGroup",InvalidStateKMSKey:"InvalidStateKMSKey",InvalidSubnet:"InvalidSubnet",InvalidZipFileException:"InvalidZipFileException",KMSKeyAccessDenied:"KMSKeyAccessDenied",KMSKeyNotFound:"KMSKeyNotFound",SubnetOutOfIPAddresses:"SubnetOutOfIPAddresses"},cp={Off:"Off",On:"On"},wp={Active:"Active",Failed:"Failed",Inactive:"Inactive",Pending:"Pending"},dp={Creating:"Creating",DisabledKMSKey:"DisabledKMSKey",EFSIOError:"EFSIOError",EFSMountConnectivityError:"EFSMountConnectivityError",EFSMountFailure:"EFSMountFailure",EFSMountTimeout:"EFSMountTimeout",EniLimitExceeded:"EniLimitExceeded",FunctionError:"FunctionError",Idle:"Idle",ImageAccessDenied:"ImageAccessDenied",ImageDeleted:"ImageDeleted",InsufficientRolePermissions:"InsufficientRolePermissions",InternalError:"InternalError",InvalidConfiguration:"InvalidConfiguration",InvalidImage:"InvalidImage",InvalidRuntime:"InvalidRuntime",InvalidSecurityGroup:"InvalidSecurityGroup",InvalidStateKMSKey:"InvalidStateKMSKey",InvalidSubnet:"InvalidSubnet",InvalidZipFileException:"InvalidZipFileException",KMSKeyAccessDenied:"KMSKeyAccessDenied",KMSKeyNotFound:"KMSKeyNotFound",Restoring:"Restoring",SubnetOutOfIPAddresses:"SubnetOutOfIPAddresses"},bp={BUFFERED:"BUFFERED",RESPONSE_STREAM:"RESPONSE_STREAM"},Sp={Allow:"Allow",Terminate:"Terminate"},vp={Auto:"Auto",FunctionUpdate:"FunctionUpdate",Manual:"Manual"},Ep={DryRun:"DryRun",Event:"Event",RequestResponse:"RequestResponse"},pp={None:"None",Tail:"Tail"},Up={DryRun:"DryRun",RequestResponse:"RequestResponse"},Ap={ALL:"ALL"},gp={FAILED:"FAILED",IN_PROGRESS:"IN_PROGRESS",READY:"READY"};Object.defineProperty(Tn,"$Command",{enumerable:!0,get:function(){return u.Command}});Object.defineProperty(Tn,"__Client",{enumerable:!0,get:function(){return u.Client}});Tn.AddLayerVersionPermissionCommand=Wr;Tn.AddPermissionCommand=jr;Tn.ApplicationLogLevel=mE;Tn.Architecture=QE;Tn.CodeSigningConfigNotFoundException=wl;Tn.CodeSigningPolicy=XE;Tn.CodeStorageExceededException=dl;Tn.CodeVerificationFailedException=bl;Tn.CreateAliasCommand=Nr;Tn.CreateCodeSigningConfigCommand=Tr;Tn.CreateEventSourceMappingCommand=Fr;Tn.CreateFunctionCommand=Hr;Tn.CreateFunctionUrlConfigCommand=Lr;Tn.DeleteAliasCommand=Pr;Tn.DeleteCodeSigningConfigCommand=zr;Tn.DeleteEventSourceMappingCommand=Vr;Tn.DeleteFunctionCodeSigningConfigCommand=xr;Tn.DeleteFunctionCommand=Yr;Tn.DeleteFunctionConcurrencyCommand=Jr;Tn.DeleteFunctionEventInvokeConfigCommand=Gr;Tn.DeleteFunctionUrlConfigCommand=Kr;Tn.DeleteLayerVersionCommand=mr;Tn.DeleteProvisionedConcurrencyConfigCommand=Qr;Tn.EC2AccessDeniedException=vl;Tn.EC2ThrottledException=El;Tn.EC2UnexpectedException=pl;Tn.EFSIOException=Ul;Tn.EFSMountConnectivityException=Al;Tn.EFSMountFailureException=gl;Tn.EFSMountTimeoutException=Dl;Tn.ENILimitReachedException=Rl;Tn.EndPointType=ep;Tn.EventSourceMappingMetric=_E;Tn.EventSourcePosition=sp;Tn.FullDocument=ZE;Tn.FunctionResponseType=CE;Tn.FunctionUrlAuthType=YE;Tn.FunctionVersion=Ap;Tn.GetAccountSettingsCommand=Xr;Tn.GetAliasCommand=Zr;Tn.GetCodeSigningConfigCommand=Cr;Tn.GetEventSourceMappingCommand=_r;Tn.GetFunctionCodeSigningConfigCommand=en;Tn.GetFunctionCommand=je;Tn.GetFunctionConcurrencyCommand=tn;Tn.GetFunctionConfigurationCommand=Ne;Tn.GetFunctionEventInvokeConfigCommand=sn;Tn.GetFunctionRecursionConfigCommand=rn;Tn.GetFunctionUrlConfigCommand=nn;Tn.GetLayerVersionByArnCommand=un;Tn.GetLayerVersionCommand=ln;Tn.GetLayerVersionPolicyCommand=an;Tn.GetPolicyCommand=on;Tn.GetProvisionedConcurrencyConfigCommand=yn;Tn.GetRuntimeManagementConfigCommand=hn;Tn.InvalidCodeSignatureException=Sl;Tn.InvalidParameterValueException=il;Tn.InvalidRequestContentException=kl;Tn.InvalidRuntimeException=Il;Tn.InvalidSecurityGroupIDException=$l;Tn.InvalidSubnetIDException=Ol;Tn.InvalidZipFileException=Bl;Tn.InvocationType=Ep;Tn.InvokeAsyncCommand=cn;Tn.InvokeCommand=wn;Tn.InvokeMode=bp;Tn.InvokeWithResponseStreamCommand=dn;Tn.KMSAccessDeniedException=Ml;Tn.KMSDisabledException=fl;Tn.KMSInvalidStateException=ql;Tn.KMSNotFoundException=Wl;Tn.KafkaSchemaRegistryAuthType=JE;Tn.KafkaSchemaValidationAttribute=KE;Tn.Lambda=Nn;Tn.LambdaClient=T;Tn.LambdaServiceException=p;Tn.LastUpdateStatus=yp;Tn.LastUpdateStatusReasonCode=hp;Tn.ListAliasesCommand=Yt;Tn.ListCodeSigningConfigsCommand=Jt;Tn.ListEventSourceMappingsCommand=Gt;Tn.ListFunctionEventInvokeConfigsCommand=Kt;Tn.ListFunctionUrlConfigsCommand=Xt;Tn.ListFunctionsByCodeSigningConfigCommand=mt;Tn.ListFunctionsCommand=Qt;Tn.ListLayerVersionsCommand=Ct;Tn.ListLayersCommand=Zt;Tn.ListProvisionedConcurrencyConfigsCommand=_t;Tn.ListTagsCommand=bn;Tn.ListVersionsByFunctionCommand=es;Tn.LogFormat=rp;Tn.LogType=pp;Tn.PackageType=ip;Tn.PolicyLengthExceededException=ul;Tn.PreconditionFailedException=ll;Tn.ProvisionedConcurrencyConfigNotFoundException=xl;Tn.ProvisionedConcurrencyStatusEnum=gp;Tn.PublishLayerVersionCommand=Sn;Tn.PublishVersionCommand=vn;Tn.PutFunctionCodeSigningConfigCommand=En;Tn.PutFunctionConcurrencyCommand=pn;Tn.PutFunctionEventInvokeConfigCommand=Un;Tn.PutFunctionRecursionConfigCommand=An;Tn.PutProvisionedConcurrencyConfigCommand=gn;Tn.PutRuntimeManagementConfigCommand=Dn;Tn.RecursiveInvocationException=jl;Tn.RecursiveLoop=Sp;Tn.RemoveLayerVersionPermissionCommand=Rn;Tn.RemovePermissionCommand=kn;Tn.RequestTooLargeException=Nl;Tn.ResourceConflictException=al;Tn.ResourceInUseException=cl;Tn.ResourceNotFoundException=ol;Tn.ResourceNotReadyException=Tl;Tn.ResponseStreamingInvocationType=Up;Tn.Runtime=up;Tn.SchemaRegistryEventRecordFormat=GE;Tn.SerializedRequestEntityTooLargeException=Fl;Tn.ServiceException=yl;Tn.SnapStartApplyOn=lp;Tn.SnapStartException=Hl;Tn.SnapStartNotReadyException=Ll;Tn.SnapStartOptimizationStatus=cp;Tn.SnapStartTimeoutException=Pl;Tn.SourceAccessType=tp;Tn.State=wp;Tn.StateReasonCode=dp;Tn.SubnetIPAddressLimitReachedException=zl;Tn.SystemLogLevel=np;Tn.TagResourceCommand=In;Tn.TenantIsolationMode=ap;Tn.ThrottleReason=xE;Tn.TooManyRequestsException=hl;Tn.TracingMode=op;Tn.UnsupportedMediaTypeException=Vl;Tn.UntagResourceCommand=$n;Tn.UpdateAliasCommand=On;Tn.UpdateCodeSigningConfigCommand=Bn;Tn.UpdateEventSourceMappingCommand=Mn;Tn.UpdateFunctionCodeCommand=fn;Tn.UpdateFunctionConfigurationCommand=qn;Tn.UpdateFunctionEventInvokeConfigCommand=Wn;Tn.UpdateFunctionUrlConfigCommand=jn;Tn.UpdateRuntimeOn=vp;Tn.paginateListAliases=UE;Tn.paginateListCodeSigningConfigs=AE;Tn.paginateListEventSourceMappings=gE;Tn.paginateListFunctionEventInvokeConfigs=DE;Tn.paginateListFunctionUrlConfigs=RE;Tn.paginateListFunctions=IE;Tn.paginateListFunctionsByCodeSigningConfig=kE;Tn.paginateListLayerVersions=$E;Tn.paginateListLayers=OE;Tn.paginateListProvisionedConcurrencyConfigs=BE;Tn.paginateListVersionsByFunction=ME;Tn.waitForFunctionActive=fE;Tn.waitForFunctionActiveV2=WE;Tn.waitForFunctionExists=NE;Tn.waitForFunctionUpdated=FE;Tn.waitForFunctionUpdatedV2=LE;Tn.waitForPublishedVersionActive=zE;Tn.waitUntilFunctionActive=qE;Tn.waitUntilFunctionActiveV2=jE;Tn.waitUntilFunctionExists=TE;Tn.waitUntilFunctionUpdated=HE;Tn.waitUntilFunctionUpdatedV2=PE;Tn.waitUntilPublishedVersionActive=VE});var Hn=k((no)=>{Object.defineProperty(no,"__esModule",{value:!0});no.resolveHttpAuthSchemeConfig=no.defaultResourceGroupsTaggingAPIHttpAuthSchemeProvider=no.defaultResourceGroupsTaggingAPIHttpAuthSchemeParametersProvider=void 0;var Og=Ae(),Fn=Cn(),Bg=async(e,t,s)=>{return{operation:(0,Fn.getSmithyContext)(t).operation,region:await(0,Fn.normalizeProvider)(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}};no.defaultResourceGroupsTaggingAPIHttpAuthSchemeParametersProvider=Bg;function Mg(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"tagging",region:e.region},propertiesExtractor:(t,s)=>({signingProperties:{config:t,context:s}})}}var fg=(e)=>{let t=[];switch(e.operation){default:t.push(Mg(e))}return t};no.defaultResourceGroupsTaggingAPIHttpAuthSchemeProvider=fg;var qg=(e)=>{let t=(0,Og.resolveAwsSdkSigV4Config)(e);return Object.assign(t,{authSchemePreference:(0,Fn.normalizeProvider)(e.authSchemePreference??[])})};no.resolveHttpAuthSchemeConfig=qg});var uo=k((TI,Ng)=>{Ng.exports={name:"@aws-sdk/client-resource-groups-tagging-api",description:"AWS SDK for JavaScript Resource Groups Tagging Api Client for Node.js, Browser and React Native",version:"3.936.0",scripts:{build:"concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'","build:cjs":"node ../../scripts/compilation/inline client-resource-groups-tagging-api","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4",clean:"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo resource-groups-tagging-api"},main:"./dist-cjs/index.js",types:"./dist-types/index.d.ts",module:"./dist-es/index.js",sideEffects:!1,dependencies:{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.936.0","@aws-sdk/credential-provider-node":"3.936.0","@aws-sdk/middleware-host-header":"3.936.0","@aws-sdk/middleware-logger":"3.936.0","@aws-sdk/middleware-recursion-detection":"3.936.0","@aws-sdk/middleware-user-agent":"3.936.0","@aws-sdk/region-config-resolver":"3.936.0","@aws-sdk/types":"3.936.0","@aws-sdk/util-endpoints":"3.936.0","@aws-sdk/util-user-agent-browser":"3.936.0","@aws-sdk/util-user-agent-node":"3.936.0","@smithy/config-resolver":"^4.4.3","@smithy/core":"^3.18.5","@smithy/fetch-http-handler":"^5.3.6","@smithy/hash-node":"^4.2.5","@smithy/invalid-dependency":"^4.2.5","@smithy/middleware-content-length":"^4.2.5","@smithy/middleware-endpoint":"^4.3.12","@smithy/middleware-retry":"^4.4.12","@smithy/middleware-serde":"^4.2.6","@smithy/middleware-stack":"^4.2.5","@smithy/node-config-provider":"^4.3.5","@smithy/node-http-handler":"^4.4.5","@smithy/protocol-http":"^5.3.5","@smithy/smithy-client":"^4.9.8","@smithy/types":"^4.9.0","@smithy/url-parser":"^4.2.5","@smithy/util-base64":"^4.3.0","@smithy/util-body-length-browser":"^4.2.0","@smithy/util-body-length-node":"^4.2.1","@smithy/util-defaults-mode-browser":"^4.3.11","@smithy/util-defaults-mode-node":"^4.2.14","@smithy/util-endpoints":"^3.2.5","@smithy/util-middleware":"^4.2.5","@smithy/util-retry":"^4.2.5","@smithy/util-utf8":"^4.2.0",tslib:"^2.6.2"},devDependencies:{"@tsconfig/node18":"18.2.4","@types/node":"^18.19.69",concurrently:"7.0.0","downlevel-dts":"0.10.1",rimraf:"3.0.2",typescript:"~5.8.3"},engines:{node:">=18.0.0"},typesVersions:{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},files:["dist-*/**"],author:{name:"AWS SDK for JavaScript Team",url:"https://aws.amazon.com/javascript/"},license:"Apache-2.0",browser:{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},homepage:"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-resource-groups-tagging-api",repository:{type:"git",url:"https://github.com/aws/aws-sdk-js-v3.git",directory:"clients/client-resource-groups-tagging-api"}}});var Do=k((Ao)=>{Object.defineProperty(Ao,"__esModule",{value:!0});Ao.ruleSet=void 0;var Eo="required",m="fn",Q="argv",Fe="ref",lo=!0,ao="isSet",Qe="booleanEquals",Te="error",me="endpoint",ee="tree",Ln="PartitionResult",oo={[Eo]:!1,type:"string"},yo={[Eo]:!0,default:!1,type:"boolean"},ho={[Fe]:"Endpoint"},po={[m]:Qe,[Q]:[{[Fe]:"UseFIPS"},!0]},Uo={[m]:Qe,[Q]:[{[Fe]:"UseDualStack"},!0]},K={},co={[m]:"getAttr",[Q]:[{[Fe]:Ln},"supportsFIPS"]},wo={[m]:Qe,[Q]:[!0,{[m]:"getAttr",[Q]:[{[Fe]:Ln},"supportsDualStack"]}]},bo=[po],So=[Uo],vo=[{[Fe]:"Region"}],Tg={version:"1.0",parameters:{Region:oo,UseDualStack:yo,UseFIPS:yo,Endpoint:oo},rules:[{conditions:[{[m]:ao,[Q]:[ho]}],rules:[{conditions:bo,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:Te},{conditions:So,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:Te},{endpoint:{url:ho,properties:K,headers:K},type:me}],type:ee},{conditions:[{[m]:ao,[Q]:vo}],rules:[{conditions:[{[m]:"aws.partition",[Q]:vo,assign:Ln}],rules:[{conditions:[po,Uo],rules:[{conditions:[{[m]:Qe,[Q]:[lo,co]},wo],rules:[{endpoint:{url:"https://tagging-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:K,headers:K},type:me}],type:ee},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:Te}],type:ee},{conditions:bo,rules:[{conditions:[{[m]:Qe,[Q]:[co,lo]}],rules:[{endpoint:{url:"https://tagging-fips.{Region}.{PartitionResult#dnsSuffix}",properties:K,headers:K},type:me}],type:ee},{error:"FIPS is enabled but this partition does not support FIPS",type:Te}],type:ee},{conditions:So,rules:[{conditions:[wo],rules:[{endpoint:{url:"https://tagging.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:K,headers:K},type:me}],type:ee},{error:"DualStack is enabled but this partition does not support DualStack",type:Te}],type:ee},{endpoint:{url:"https://tagging.{Region}.{PartitionResult#dnsSuffix}",properties:K,headers:K},type:me}],type:ee}],type:ee},{error:"Invalid Configuration: Missing Region",type:Te}]};Ao.ruleSet=Tg});var Io=k((Ro)=>{Object.defineProperty(Ro,"__esModule",{value:!0});Ro.defaultEndpointResolver=void 0;var Fg=yu(),Pn=ou(),Hg=Do(),Lg=new Pn.EndpointCache({size:50,params:["Endpoint","Region","UseDualStack","UseFIPS"]}),Pg=(e,t={})=>{return Lg.get(e,()=>(0,Pn.resolveEndpoint)(Hg.ruleSet,{endpointParams:e,logger:t.logger}))};Ro.defaultEndpointResolver=Pg;Pn.customEndpointFunctions.aws=Fg.awsEndpointFunctions});var fo=k((Bo)=>{Object.defineProperty(Bo,"__esModule",{value:!0});Bo.getRuntimeConfig=void 0;var zg=Ae(),Vg=pu(),xg=ne(),Yg=Eu(),$o=vu(),Oo=Su(),Jg=Hn(),Gg=Io(),Kg=(e)=>{return{apiVersion:"2017-01-26",base64Decoder:e?.base64Decoder??$o.fromBase64,base64Encoder:e?.base64Encoder??$o.toBase64,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??Gg.defaultEndpointResolver,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Jg.defaultResourceGroupsTaggingAPIHttpAuthSchemeProvider,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:(t)=>t.getIdentityProvider("aws.auth#sigv4"),signer:new zg.AwsSdkSigV4Signer}],logger:e?.logger??new xg.NoOpLogger,protocol:e?.protocol??new Vg.AwsJson1_1Protocol({defaultNamespace:"com.amazonaws.resourcegroupstaggingapi",serviceTarget:"ResourceGroupsTaggingAPI_20170126",awsQueryCompatible:!1}),serviceId:e?.serviceId??"Resource Groups Tagging API",urlParser:e?.urlParser??Yg.parseUrl,utf8Decoder:e?.utf8Decoder??Oo.fromUtf8,utf8Encoder:e?.utf8Encoder??Oo.toUtf8}};Bo.getRuntimeConfig=Kg});var Ho=k((To)=>{Object.defineProperty(To,"__esModule",{value:!0});To.getRuntimeConfig=void 0;var mg=st(),Qg=mg.__importDefault(uo()),qo=Ae(),Xg=bs(),Wo=Mu(),ts=nt(),Zg=fu(),jo=it(),Ue=Ou(),No=$u(),Cg=qu(),_g=Bu(),eD=fo(),tD=ne(),sD=Wu(),rD=ne(),nD=(e)=>{(0,rD.emitWarningIfUnsupportedVersion)(process.version);let t=(0,sD.resolveDefaultsModeConfig)(e),s=()=>t().then(tD.loadConfigsForDefaultMode),n=(0,eD.getRuntimeConfig)(e);(0,qo.emitWarningIfUnsupportedVersion)(process.version);let i={profile:e?.profile,logger:n.logger};return{...n,...e,runtime:"node",defaultsMode:t,authSchemePreference:e?.authSchemePreference??(0,Ue.loadConfig)(qo.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS,i),bodyLengthChecker:e?.bodyLengthChecker??Cg.calculateBodyLength,credentialDefaultProvider:e?.credentialDefaultProvider??Xg.defaultProvider,defaultUserAgentProvider:e?.defaultUserAgentProvider??(0,Wo.createDefaultUserAgentProvider)({serviceId:n.serviceId,clientVersion:Qg.default.version}),maxAttempts:e?.maxAttempts??(0,Ue.loadConfig)(jo.NODE_MAX_ATTEMPT_CONFIG_OPTIONS,e),region:e?.region??(0,Ue.loadConfig)(ts.NODE_REGION_CONFIG_OPTIONS,{...ts.NODE_REGION_CONFIG_FILE_OPTIONS,...i}),requestHandler:No.NodeHttpHandler.create(e?.requestHandler??s),retryMode:e?.retryMode??(0,Ue.loadConfig)({...jo.NODE_RETRY_MODE_CONFIG_OPTIONS,default:async()=>(await s()).retryMode||_g.DEFAULT_RETRY_MODE},e),sha256:e?.sha256??Zg.Hash.bind(null,"sha256"),streamCollector:e?.streamCollector??No.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??(0,Ue.loadConfig)(ts.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,i),useFipsEndpoint:e?.useFipsEndpoint??(0,Ue.loadConfig)(ts.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,i),userAgentAppId:e?.userAgentAppId??(0,Ue.loadConfig)(Wo.NODE_APP_ID_CONFIG_OPTIONS,i)}};To.getRuntimeConfig=nD});var oy=k((Qn)=>{var Lo=Xu(),iD=Zu(),uD=Cu(),Po=tl(),lD=nt(),ue=el(),le=_u(),aD=sl(),X=rl(),zo=it(),M=ne(),Vo=Hn(),oD=Ho(),xo=nl(),Yo=Qu(),yD=(e)=>{return Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:"tagging"})},te={UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}},hD=(e)=>{let{httpAuthSchemes:t,httpAuthSchemeProvider:s,credentials:n}=e;return{setHttpAuthScheme(i){let y=t.findIndex((S)=>S.schemeId===i.schemeId);if(y===-1)t.push(i);else t.splice(y,1,i)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(i){s=i},httpAuthSchemeProvider(){return s},setCredentials(i){n=i},credentials(){return n}}},cD=(e)=>{return{httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()}},wD=(e,t)=>{let s=Object.assign(xo.getAwsRegionExtensionConfiguration(e),M.getDefaultExtensionConfiguration(e),Yo.getHttpHandlerExtensionConfiguration(e),hD(e));return t.forEach((n)=>n.configure(s)),Object.assign(e,xo.resolveAwsRegionExtensionConfiguration(s),M.resolveDefaultRuntimeConfig(s),Yo.resolveHttpHandlerRuntimeConfig(s),cD(s))};class ae extends M.Client{config;constructor(...[e]){let t=oD.getRuntimeConfig(e||{});super(t);this.initConfig=t;let s=yD(t),n=Po.resolveUserAgentConfig(s),i=zo.resolveRetryConfig(n),y=lD.resolveRegionConfig(i),S=Lo.resolveHostHeaderConfig(y),d=X.resolveEndpointConfig(S),D=Vo.resolveHttpAuthSchemeConfig(d),H=wD(D,e?.extensions||[]);this.config=H,this.middlewareStack.use(le.getSchemaSerdePlugin(this.config)),this.middlewareStack.use(Po.getUserAgentPlugin(this.config)),this.middlewareStack.use(zo.getRetryPlugin(this.config)),this.middlewareStack.use(aD.getContentLengthPlugin(this.config)),this.middlewareStack.use(Lo.getHostHeaderPlugin(this.config)),this.middlewareStack.use(iD.getLoggerPlugin(this.config)),this.middlewareStack.use(uD.getRecursionDetectionPlugin(this.config)),this.middlewareStack.use(ue.getHttpAuthSchemeEndpointRuleSetPlugin(this.config,{httpAuthSchemeParametersProvider:Vo.defaultResourceGroupsTaggingAPIHttpAuthSchemeParametersProvider,identityProviderConfigProvider:async(f)=>new ue.DefaultIdentityProviderConfig({"aws.auth#sigv4":f.credentials})})),this.middlewareStack.use(ue.getHttpSigningPlugin(this.config))}destroy(){super.destroy()}}var oe=class e extends M.ServiceException{constructor(t){super(t);Object.setPrototypeOf(this,e.prototype)}},Jo=class e extends oe{name="ConcurrentModificationException";$fault="client";Message;constructor(t){super({name:"ConcurrentModificationException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},Go=class e extends oe{name="ConstraintViolationException";$fault="client";Message;constructor(t){super({name:"ConstraintViolationException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},Ko=class e extends oe{name="InternalServiceException";$fault="server";Message;constructor(t){super({name:"InternalServiceException",$fault:"server",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},mo=class e extends oe{name="InvalidParameterException";$fault="client";Message;constructor(t){super({name:"InvalidParameterException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},Qo=class e extends oe{name="ThrottledException";$fault="client";Message;constructor(t){super({name:"ThrottledException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},Xo=class e extends oe{name="PaginationTokenExpiredException";$fault="client";Message;constructor(t){super({name:"PaginationTokenExpiredException",$fault:"client",...t});Object.setPrototypeOf(this,e.prototype),this.Message=t.Message}},Zo="ComplianceDetails",dD="CloudFormationResourceTypes",bD="ConcurrentModificationException",SD="ComplianceStatus",vD="ConstraintViolationException",ED="DescribeReportCreation",pD="DescribeReportCreationInput",UD="DescribeReportCreationOutput",AD="ErrorCode",gD="ExcludeCompliantResources",Co="ErrorMessage",DD="FailureInfo",zn="FailedResourcesMap",RD="GroupBy",kD="GetComplianceSummary",ID="GetComplianceSummaryInput",$D="GetComplianceSummaryOutput",OD="GetResources",BD="GetResourcesInput",MD="GetResourcesOutput",fD="GetTagKeys",qD="GetTagKeysInput",WD="GetTagKeysOutput",jD="GetTagValues",ND="GetTagValuesInput",TD="GetTagValuesOutput",FD="IncludeComplianceDetails",HD="InvalidParameterException",LD="InternalServiceException",Vn="Key",PD="KeysWithNoncompliantValues",zD="ListRequiredTags",VD="ListRequiredTagsInput",xD="ListRequiredTagsOutput",YD="LastUpdated",He="Message",_o="MaxResults",JD="NonCompliantResources",GD="NoncompliantKeys",ey="NextToken",ye="PaginationToken",KD="PaginationTokenExpiredException",mD="Region",QD="ResourceARN",xn="ResourceARNList",XD="RegionFilters",ZD="ResourcesPerPage",CD="RequiredTags",ty="ResourceTypeFilters",_D="RequiredTagsForListRequiredTags",eR="ReportingTagKeys",tR="ResourceTagMapping",sy="ResourceTagMappingList",sR="RequiredTag",ry="ResourceType",rR="Status",nR="S3Bucket",iR="StatusCode",uR="StartDate",lR="S3Location",ny="SummaryList",aR="StartReportCreation",oR="StartReportCreationInput",yR="StartReportCreationOutput",hR="Summary",iy="Tags",cR="ThrottledException",wR="TagFilters",dR="TagFilterList",bR="TagFilter",SR="TargetId",vR="TargetIdFilters",ER="TargetIdType",uy="TagKeys",pR="TagKeyFilters",UR="TagList",AR="TagsPerPage",gR="TagResources",DR="TagResourcesInput",RR="TagResourcesOutput",kR="TagValues",IR="Tag",$R="UntagResources",OR="UntagResourcesInput",BR="UntagResourcesOutput",MR="Value",fR="Values",Xe="client",Le="error",se="http",qR="server",ly="smithy.ts.sdk.synthetic.com.amazonaws.resourcegroupstaggingapi",c="com.amazonaws.resourcegroupstaggingapi",WR=[3,c,Zo,0,[GD,PD,SD],[64,64,2]],jR=[-3,c,bD,{[Le]:Xe},[He],[0]];le.TypeRegistry.for(c).registerError(jR,Jo);var NR=[-3,c,vD,{[Le]:Xe},[He],[0]];le.TypeRegistry.for(c).registerError(NR,Go);var TR=[3,c,pD,0,[],[]],FR=[3,c,UD,0,[rR,lR,uR,Co],[0,0,0,0]],HR=[3,c,DD,0,[iR,AD,Co],[1,0,0]],LR=[3,c,ID,0,[vR,XD,ty,pR,RD,_o,ye],[64,64,64,64,64,1,0]],PR=[3,c,$D,0,[ny,ye],[()=>wk,0]],zR=[3,c,BD,0,[ye,wR,ZD,AR,ty,FD,gD,xn],[0,()=>dk,1,1,64,2,2,64]],VR=[3,c,MD,0,[ye,sy],[0,()=>ck]],xR=[3,c,qD,0,[ye],[0]],YR=[3,c,WD,0,[ye,uy],[0,64]],JR=[3,c,ND,0,[ye,Vn],[0,0]],GR=[3,c,TD,0,[ye,kR],[0,64]],KR=[-3,c,LD,{[Le]:qR},[He],[0]];le.TypeRegistry.for(c).registerError(KR,Ko);var mR=[-3,c,HD,{[Le]:Xe},[He],[0]];le.TypeRegistry.for(c).registerError(mR,mo);var QR=[3,c,VD,0,[ey,_o],[0,1]],XR=[3,c,xD,0,[CD,ey],[()=>hk,0]],ZR=[-3,c,KD,{[Le]:Xe},[He],[0]];le.TypeRegistry.for(c).registerError(ZR,Xo);var CR=[3,c,sR,0,[ry,dD,eR],[0,64,64]],_R=[3,c,tR,0,[QD,iy,Zo],[0,()=>bk,()=>WR]],ek=[3,c,oR,0,[nR],[0]],tk=[3,c,yR,0,[],[]],sk=[3,c,hR,0,[YD,SR,ER,mD,ry,JD],[0,0,0,0,0,1]],rk=[3,c,IR,0,[Vn,MR],[0,0]],nk=[3,c,bR,0,[Vn,fR],[0,64]],ik=[3,c,DR,0,[xn,iy],[64,128]],uk=[3,c,RR,0,[zn],[()=>ay]],lk=[-3,c,cR,{[Le]:Xe},[He],[0]];le.TypeRegistry.for(c).registerError(lk,Qo);var ak=[3,c,OR,0,[xn,uy],[64,64]],ok=[3,c,BR,0,[zn],[()=>ay]],yk=[-3,ly,"ResourceGroupsTaggingAPIServiceException",0,[],[]];le.TypeRegistry.for(ly).registerError(yk,oe);var hk=[1,c,_D,0,()=>CR],ck=[1,c,sy,0,()=>_R],wk=[1,c,ny,0,()=>sk],dk=[1,c,dR,0,()=>nk],bk=[1,c,UR,0,()=>rk],ay=[2,c,zn,0,0,()=>HR],Sk=[9,c,ED,{[se]:["POST","/DescribeReportCreation",200]},()=>TR,()=>FR],vk=[9,c,kD,{[se]:["POST","/GetComplianceSummary",200]},()=>LR,()=>PR],Ek=[9,c,OD,{[se]:["POST","/GetResources",200]},()=>zR,()=>VR],pk=[9,c,fD,{[se]:["POST","/GetTagKeys",200]},()=>xR,()=>YR],Uk=[9,c,jD,{[se]:["POST","/GetTagValues",200]},()=>JR,()=>GR],Ak=[9,c,zD,{[se]:["POST","/ListRequiredTags",200]},()=>QR,()=>XR],gk=[9,c,aR,{[se]:["POST","/StartReportCreation",200]},()=>ek,()=>tk],Dk=[9,c,gR,{[se]:["POST","/TagResources",200]},()=>ik,()=>uk],Rk=[9,c,$R,{[se]:["POST","/UntagResources",200]},()=>ak,()=>ok];class Yn extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","DescribeReportCreation",{}).n("ResourceGroupsTaggingAPIClient","DescribeReportCreationCommand").sc(Sk).build(){}class ss extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","GetComplianceSummary",{}).n("ResourceGroupsTaggingAPIClient","GetComplianceSummaryCommand").sc(vk).build(){}class rs extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","GetResources",{}).n("ResourceGroupsTaggingAPIClient","GetResourcesCommand").sc(Ek).build(){}class ns extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","GetTagKeys",{}).n("ResourceGroupsTaggingAPIClient","GetTagKeysCommand").sc(pk).build(){}class is extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","GetTagValues",{}).n("ResourceGroupsTaggingAPIClient","GetTagValuesCommand").sc(Uk).build(){}class us extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","ListRequiredTags",{}).n("ResourceGroupsTaggingAPIClient","ListRequiredTagsCommand").sc(Ak).build(){}class Jn extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","StartReportCreation",{}).n("ResourceGroupsTaggingAPIClient","StartReportCreationCommand").sc(gk).build(){}class Gn extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","TagResources",{}).n("ResourceGroupsTaggingAPIClient","TagResourcesCommand").sc(Dk).build(){}class Kn extends M.Command.classBuilder().ep(te).m(function(e,t,s,n){return[X.getEndpointPlugin(s,e.getEndpointParameterInstructions())]}).s("ResourceGroupsTaggingAPI_20170126","UntagResources",{}).n("ResourceGroupsTaggingAPIClient","UntagResourcesCommand").sc(Rk).build(){}var kk={DescribeReportCreationCommand:Yn,GetComplianceSummaryCommand:ss,GetResourcesCommand:rs,GetTagKeysCommand:ns,GetTagValuesCommand:is,ListRequiredTagsCommand:us,StartReportCreationCommand:Jn,TagResourcesCommand:Gn,UntagResourcesCommand:Kn};class mn extends ae{}M.createAggregatedClient(kk,mn);var Ik=ue.createPaginator(ae,ss,"PaginationToken","PaginationToken","MaxResults"),$k=ue.createPaginator(ae,rs,"PaginationToken","PaginationToken","ResourcesPerPage"),Ok=ue.createPaginator(ae,ns,"PaginationToken","PaginationToken",""),Bk=ue.createPaginator(ae,is,"PaginationToken","PaginationToken",""),Mk=ue.createPaginator(ae,us,"NextToken","NextToken","MaxResults"),fk={INTERNAL_SERVICE_EXCEPTION:"InternalServiceException",INVALID_PARAMETER_EXCEPTION:"InvalidParameterException"},qk={REGION:"REGION",RESOURCE_TYPE:"RESOURCE_TYPE",TARGET_ID:"TARGET_ID"},Wk={ACCOUNT:"ACCOUNT",OU:"OU",ROOT:"ROOT"};Object.defineProperty(Qn,"$Command",{enumerable:!0,get:function(){return M.Command}});Object.defineProperty(Qn,"__Client",{enumerable:!0,get:function(){return M.Client}});Qn.ConcurrentModificationException=Jo;Qn.ConstraintViolationException=Go;Qn.DescribeReportCreationCommand=Yn;Qn.ErrorCode=fk;Qn.GetComplianceSummaryCommand=ss;Qn.GetResourcesCommand=rs;Qn.GetTagKeysCommand=ns;Qn.GetTagValuesCommand=is;Qn.GroupByAttribute=qk;Qn.InternalServiceException=Ko;Qn.InvalidParameterException=mo;Qn.ListRequiredTagsCommand=us;Qn.PaginationTokenExpiredException=Xo;Qn.ResourceGroupsTaggingAPI=mn;Qn.ResourceGroupsTaggingAPIClient=ae;Qn.ResourceGroupsTaggingAPIServiceException=oe;Qn.StartReportCreationCommand=Jn;Qn.TagResourcesCommand=Gn;Qn.TargetIdType=Wk;Qn.ThrottledException=Qo;Qn.UntagResourcesCommand=Kn;Qn.paginateGetComplianceSummary=Ik;Qn.paginateGetResources=$k;Qn.paginateGetTagKeys=Ok;Qn.paginateGetTagValues=Bk;Qn.paginateListRequiredTags=Mk});var ls=Ze(ro(),1),as=Ze(oy(),1);var yy="$$keepActivePing$$";var uI=new ls.LambdaClient,lI=new as.ResourceGroupsTaggingAPIClient,aI=process.env.ENABLE_LOGS==="true",YI=async(e)=>{let{action:t}=e;if(t==null)return;if(t!=="lambdaKeepActive")return;let s;do{let{ResourceTagMappingList:n=[],PaginationToken:i}=await lI.send(new as.GetResourcesCommand({ResourceTypeFilters:["lambda:function"],ResourcesPerPage:25,TagFilters:[{Key:"keepActive",Values:["true"]}],PaginationToken:s}));s=i,await Promise.all(n.map(async(y)=>{if(await uI.send(new ls.InvokeCommand({FunctionName:y.ResourceARN,InvocationType:"Event",Payload:JSON.stringify({[yy]:!0})})),aI)console.info(`Invoked ${y.ResourceARN}`)}))}while(s!=null)};export{YI as handler};
|
|
10
|
-
|
|
11
|
-
//# debugId=1E7387A980FD621764756E2164756E21
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvZXZlbnRzdHJlYW0tc2VyZGUtY29uZmlnLXJlc29sdmVyL2Rpc3QtY2pzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLXNkay9jbGllbnQtbGFtYmRhL2Rpc3QtY2pzL2F1dGgvaHR0cEF1dGhTY2hlbWVQcm92aWRlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1ub2RlL2Rpc3QtY2pzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLWNyeXB0by91dGlsL25vZGVfbW9kdWxlcy9Ac21pdGh5L3V0aWwtdXRmOC9ub2RlX21vZHVsZXMvQHNtaXRoeS91dGlsLWJ1ZmZlci1mcm9tL25vZGVfbW9kdWxlcy9Ac21pdGh5L2lzLWFycmF5LWJ1ZmZlci9kaXN0LWNqcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1jcnlwdG8vdXRpbC9ub2RlX21vZHVsZXMvQHNtaXRoeS91dGlsLXV0Zjgvbm9kZV9tb2R1bGVzL0BzbWl0aHkvdXRpbC1idWZmZXItZnJvbS9kaXN0LWNqcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1jcnlwdG8vdXRpbC9ub2RlX21vZHVsZXMvQHNtaXRoeS91dGlsLXV0ZjgvZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3MtY3J5cHRvL3V0aWwvYnVpbGQvbWFpbi9jb252ZXJ0VG9CdWZmZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3MtY3J5cHRvL3V0aWwvYnVpbGQvbWFpbi9pc0VtcHR5RGF0YS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1jcnlwdG8vdXRpbC9idWlsZC9tYWluL251bVRvVWludDguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3MtY3J5cHRvL3V0aWwvYnVpbGQvbWFpbi91aW50MzJBcnJheUZyb20uanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3MtY3J5cHRvL3V0aWwvYnVpbGQvbWFpbi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1jcnlwdG8vY3JjMzIvYnVpbGQvbWFpbi9hd3NfY3JjMzIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3MtY3J5cHRvL2NyYzMyL2J1aWxkL21haW4vaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvZXZlbnRzdHJlYW0tY29kZWMvZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvZXZlbnRzdHJlYW0tc2VyZGUtdW5pdmVyc2FsL2Rpc3QtY2pzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2V2ZW50c3RyZWFtLXNlcmRlLW5vZGUvZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEvZGlzdC1janMvZW5kcG9pbnQvcnVsZXNldC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1zZGsvY2xpZW50LWxhbWJkYS9kaXN0LWNqcy9lbmRwb2ludC9lbmRwb2ludFJlc29sdmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLXNkay9jbGllbnQtbGFtYmRhL2Rpc3QtY2pzL3J1bnRpbWVDb25maWcuc2hhcmVkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLXNkay9jbGllbnQtbGFtYmRhL2Rpc3QtY2pzL3J1bnRpbWVDb25maWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvdXRpbC13YWl0ZXIvZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEvZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NsaWVudC1yZXNvdXJjZS1ncm91cHMtdGFnZ2luZy1hcGkvZGlzdC1janMvYXV0aC9odHRwQXV0aFNjaGVtZVByb3ZpZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLXNkay9jbGllbnQtcmVzb3VyY2UtZ3JvdXBzLXRhZ2dpbmctYXBpL2Rpc3QtY2pzL2VuZHBvaW50L3J1bGVzZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NsaWVudC1yZXNvdXJjZS1ncm91cHMtdGFnZ2luZy1hcGkvZGlzdC1janMvZW5kcG9pbnQvZW5kcG9pbnRSZXNvbHZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1zZGsvY2xpZW50LXJlc291cmNlLWdyb3Vwcy10YWdnaW5nLWFwaS9kaXN0LWNqcy9ydW50aW1lQ29uZmlnLnNoYXJlZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGF3cy1zZGsvY2xpZW50LXJlc291cmNlLWdyb3Vwcy10YWdnaW5nLWFwaS9kaXN0LWNqcy9ydW50aW1lQ29uZmlnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYXdzLXNkay9jbGllbnQtcmVzb3VyY2UtZ3JvdXBzLXRhZ2dpbmctYXBpL2Rpc3QtY2pzL2luZGV4LmpzIiwgIi4uL2hhbmRsZXIudHMiLCAiLi4vc2hhcmVkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcmVzb2x2ZUV2ZW50U3RyZWFtU2VyZGVDb25maWcgPSAoaW5wdXQpID0+IE9iamVjdC5hc3NpZ24oaW5wdXQsIHtcbiAgICBldmVudFN0cmVhbU1hcnNoYWxsZXI6IGlucHV0LmV2ZW50U3RyZWFtU2VyZGVQcm92aWRlcihpbnB1dCksXG59KTtcblxuZXhwb3J0cy5yZXNvbHZlRXZlbnRTdHJlYW1TZXJkZUNvbmZpZyA9IHJlc29sdmVFdmVudFN0cmVhbVNlcmRlQ29uZmlnO1xuIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVzb2x2ZUh0dHBBdXRoU2NoZW1lQ29uZmlnID0gZXhwb3J0cy5kZWZhdWx0TGFtYmRhSHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IGV4cG9ydHMuZGVmYXVsdExhbWJkYUh0dHBBdXRoU2NoZW1lUGFyYW1ldGVyc1Byb3ZpZGVyID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIkBhd3Mtc2RrL2NvcmVcIik7XG5jb25zdCB1dGlsX21pZGRsZXdhcmVfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3V0aWwtbWlkZGxld2FyZVwiKTtcbmNvbnN0IGRlZmF1bHRMYW1iZGFIdHRwQXV0aFNjaGVtZVBhcmFtZXRlcnNQcm92aWRlciA9IGFzeW5jIChjb25maWcsIGNvbnRleHQsIGlucHV0KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlcmF0aW9uOiAoMCwgdXRpbF9taWRkbGV3YXJlXzEuZ2V0U21pdGh5Q29udGV4dCkoY29udGV4dCkub3BlcmF0aW9uLFxuICAgICAgICByZWdpb246IChhd2FpdCAoMCwgdXRpbF9taWRkbGV3YXJlXzEubm9ybWFsaXplUHJvdmlkZXIpKGNvbmZpZy5yZWdpb24pKCkpIHx8XG4gICAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImV4cGVjdGVkIGByZWdpb25gIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGBhd3MuYXV0aCNzaWd2NGBcIik7XG4gICAgICAgICAgICB9KSgpLFxuICAgIH07XG59O1xuZXhwb3J0cy5kZWZhdWx0TGFtYmRhSHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXIgPSBkZWZhdWx0TGFtYmRhSHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXI7XG5mdW5jdGlvbiBjcmVhdGVBd3NBdXRoU2lndjRIdHRwQXV0aE9wdGlvbihhdXRoUGFyYW1ldGVycykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVtZUlkOiBcImF3cy5hdXRoI3NpZ3Y0XCIsXG4gICAgICAgIHNpZ25pbmdQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBuYW1lOiBcImxhbWJkYVwiLFxuICAgICAgICAgICAgcmVnaW9uOiBhdXRoUGFyYW1ldGVycy5yZWdpb24sXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXNFeHRyYWN0b3I6IChjb25maWcsIGNvbnRleHQpID0+ICh7XG4gICAgICAgICAgICBzaWduaW5nUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfTtcbn1cbmNvbnN0IGRlZmF1bHRMYW1iZGFIdHRwQXV0aFNjaGVtZVByb3ZpZGVyID0gKGF1dGhQYXJhbWV0ZXJzKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtdO1xuICAgIHN3aXRjaCAoYXV0aFBhcmFtZXRlcnMub3BlcmF0aW9uKSB7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaChjcmVhdGVBd3NBdXRoU2lndjRIdHRwQXV0aE9wdGlvbihhdXRoUGFyYW1ldGVycykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufTtcbmV4cG9ydHMuZGVmYXVsdExhbWJkYUh0dHBBdXRoU2NoZW1lUHJvdmlkZXIgPSBkZWZhdWx0TGFtYmRhSHR0cEF1dGhTY2hlbWVQcm92aWRlcjtcbmNvbnN0IHJlc29sdmVIdHRwQXV0aFNjaGVtZUNvbmZpZyA9IChjb25maWcpID0+IHtcbiAgICBjb25zdCBjb25maWdfMCA9ICgwLCBjb3JlXzEucmVzb2x2ZUF3c1Nka1NpZ1Y0Q29uZmlnKShjb25maWcpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNvbmZpZ18wLCB7XG4gICAgICAgIGF1dGhTY2hlbWVQcmVmZXJlbmNlOiAoMCwgdXRpbF9taWRkbGV3YXJlXzEubm9ybWFsaXplUHJvdmlkZXIpKGNvbmZpZy5hdXRoU2NoZW1lUHJlZmVyZW5jZSA/PyBbXSksXG4gICAgfSk7XG59O1xuZXhwb3J0cy5yZXNvbHZlSHR0cEF1dGhTY2hlbWVDb25maWcgPSByZXNvbHZlSHR0cEF1dGhTY2hlbWVDb25maWc7XG4iLAogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIGNyZWRlbnRpYWxQcm92aWRlckVudiA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItZW52Jyk7XG52YXIgcHJvcGVydHlQcm92aWRlciA9IHJlcXVpcmUoJ0BzbWl0aHkvcHJvcGVydHktcHJvdmlkZXInKTtcbnZhciBzaGFyZWRJbmlGaWxlTG9hZGVyID0gcmVxdWlyZSgnQHNtaXRoeS9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyJyk7XG5cbmNvbnN0IEVOVl9JTURTX0RJU0FCTEVEID0gXCJBV1NfRUMyX01FVEFEQVRBX0RJU0FCTEVEXCI7XG5jb25zdCByZW1vdGVQcm92aWRlciA9IGFzeW5jIChpbml0KSA9PiB7XG4gICAgY29uc3QgeyBFTlZfQ01EU19GVUxMX1VSSSwgRU5WX0NNRFNfUkVMQVRJVkVfVVJJLCBmcm9tQ29udGFpbmVyTWV0YWRhdGEsIGZyb21JbnN0YW5jZU1ldGFkYXRhIH0gPSBhd2FpdCBpbXBvcnQoJ0BzbWl0aHkvY3JlZGVudGlhbC1wcm92aWRlci1pbWRzJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52W0VOVl9DTURTX1JFTEFUSVZFX1VSSV0gfHwgcHJvY2Vzcy5lbnZbRU5WX0NNRFNfRlVMTF9VUkldKSB7XG4gICAgICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSAtIHJlbW90ZVByb3ZpZGVyOjpmcm9tSHR0cC9mcm9tQ29udGFpbmVyTWV0YWRhdGFcIik7XG4gICAgICAgIGNvbnN0IHsgZnJvbUh0dHAgfSA9IGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1odHRwJyk7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eVByb3ZpZGVyLmNoYWluKGZyb21IdHRwKGluaXQpLCBmcm9tQ29udGFpbmVyTWV0YWRhdGEoaW5pdCkpO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnZbRU5WX0lNRFNfRElTQUJMRURdICYmIHByb2Nlc3MuZW52W0VOVl9JTURTX0RJU0FCTEVEXSAhPT0gXCJmYWxzZVwiKSB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgcHJvcGVydHlQcm92aWRlci5DcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoXCJFQzIgSW5zdGFuY2UgTWV0YWRhdGEgU2VydmljZSBhY2Nlc3MgZGlzYWJsZWRcIiwgeyBsb2dnZXI6IGluaXQubG9nZ2VyIH0pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpbml0LmxvZ2dlcj8uZGVidWcoXCJAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLW5vZGUgLSByZW1vdGVQcm92aWRlcjo6ZnJvbUluc3RhbmNlTWV0YWRhdGFcIik7XG4gICAgcmV0dXJuIGZyb21JbnN0YW5jZU1ldGFkYXRhKGluaXQpO1xufTtcblxuZnVuY3Rpb24gbWVtb2l6ZUNoYWluKHByb3ZpZGVycywgdHJlYXRBc0V4cGlyZWQpIHtcbiAgICBjb25zdCBjaGFpbiA9IGludGVybmFsQ3JlYXRlQ2hhaW4ocHJvdmlkZXJzKTtcbiAgICBsZXQgYWN0aXZlTG9jaztcbiAgICBsZXQgcGFzc2l2ZUxvY2s7XG4gICAgbGV0IGNyZWRlbnRpYWxzO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmZvcmNlUmVmcmVzaCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNoYWluKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJhdGlvbikge1xuICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmF0aW9uPy5nZXRUaW1lKCkgPCBEYXRlLm5vdygpKSB7XG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGl2ZUxvY2spIHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGl2ZUxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWNyZWRlbnRpYWxzIHx8IHRyZWF0QXNFeHBpcmVkPy4oY3JlZGVudGlhbHMpKSB7XG4gICAgICAgICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NpdmVMb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NpdmVMb2NrID0gY2hhaW4ob3B0aW9ucykudGhlbigoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZUxvY2sgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUxvY2sgPSBjaGFpbihvcHRpb25zKS50aGVuKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gYztcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlTG9jayA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIob3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzO1xuICAgIH07XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xufVxuY29uc3QgaW50ZXJuYWxDcmVhdGVDaGFpbiA9IChwcm92aWRlcnMpID0+IGFzeW5jIChhd3NJZGVudGl0eVByb3BlcnRpZXMpID0+IHtcbiAgICBsZXQgbGFzdFByb3ZpZGVyRXJyb3I7XG4gICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBwcm92aWRlcnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBwcm92aWRlcihhd3NJZGVudGl0eVByb3BlcnRpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxhc3RQcm92aWRlckVycm9yID0gZXJyO1xuICAgICAgICAgICAgaWYgKGVycj8udHJ5TmV4dExpbmspIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBsYXN0UHJvdmlkZXJFcnJvcjtcbn07XG5cbmxldCBtdWx0aXBsZUNyZWRlbnRpYWxTb3VyY2VXYXJuaW5nRW1pdHRlZCA9IGZhbHNlO1xuY29uc3QgZGVmYXVsdFByb3ZpZGVyID0gKGluaXQgPSB7fSkgPT4gbWVtb2l6ZUNoYWluKFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBpbml0LnByb2ZpbGUgPz8gcHJvY2Vzcy5lbnZbc2hhcmVkSW5pRmlsZUxvYWRlci5FTlZfUFJPRklMRV07XG4gICAgICAgIGlmIChwcm9maWxlKSB7XG4gICAgICAgICAgICBjb25zdCBlbnZTdGF0aWNDcmVkZW50aWFsc0FyZVNldCA9IHByb2Nlc3MuZW52W2NyZWRlbnRpYWxQcm92aWRlckVudi5FTlZfS0VZXSAmJiBwcm9jZXNzLmVudltjcmVkZW50aWFsUHJvdmlkZXJFbnYuRU5WX1NFQ1JFVF07XG4gICAgICAgICAgICBpZiAoZW52U3RhdGljQ3JlZGVudGlhbHNBcmVTZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW11bHRpcGxlQ3JlZGVudGlhbFNvdXJjZVdhcm5pbmdFbWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhcm5GbiA9IGluaXQubG9nZ2VyPy53YXJuICYmIGluaXQubG9nZ2VyPy5jb25zdHJ1Y3Rvcj8ubmFtZSAhPT0gXCJOb09wTG9nZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaW5pdC5sb2dnZXIud2Fybi5iaW5kKGluaXQubG9nZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb25zb2xlLndhcm47XG4gICAgICAgICAgICAgICAgICAgIHdhcm5GbihgQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1ub2RlIC0gZGVmYXVsdFByb3ZpZGVyOjpmcm9tRW52IFdBUk5JTkc6XG4gICAgTXVsdGlwbGUgY3JlZGVudGlhbCBzb3VyY2VzIGRldGVjdGVkOiBcbiAgICBCb3RoIEFXU19QUk9GSUxFIGFuZCB0aGUgcGFpciBBV1NfQUNDRVNTX0tFWV9JRC9BV1NfU0VDUkVUX0FDQ0VTU19LRVkgc3RhdGljIGNyZWRlbnRpYWxzIGFyZSBzZXQuXG4gICAgVGhpcyBTREsgd2lsbCBwcm9jZWVkIHdpdGggdGhlIEFXU19QUk9GSUxFIHZhbHVlLlxuICAgIFxuICAgIEhvd2V2ZXIsIGEgZnV0dXJlIHZlcnNpb24gbWF5IGNoYW5nZSB0aGlzIGJlaGF2aW9yIHRvIHByZWZlciB0aGUgRU5WIHN0YXRpYyBjcmVkZW50aWFscy5cbiAgICBQbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBlbnZpcm9ubWVudCBvbmx5IHNldHMgZWl0aGVyIHRoZSBBV1NfUFJPRklMRSBvciB0aGVcbiAgICBBV1NfQUNDRVNTX0tFWV9JRC9BV1NfU0VDUkVUX0FDQ0VTU19LRVkgcGFpci5cbmApO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZUNyZWRlbnRpYWxTb3VyY2VXYXJuaW5nRW1pdHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IHByb3BlcnR5UHJvdmlkZXIuQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKFwiQVdTX1BST0ZJTEUgaXMgc2V0LCBza2lwcGluZyBmcm9tRW52IHByb3ZpZGVyLlwiLCB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyOiBpbml0LmxvZ2dlcixcbiAgICAgICAgICAgICAgICB0cnlOZXh0TGluazogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSAtIGRlZmF1bHRQcm92aWRlcjo6ZnJvbUVudlwiKTtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxQcm92aWRlckVudi5mcm9tRW52KGluaXQpKCk7XG4gICAgfSxcbiAgICBhc3luYyAoYXdzSWRlbnRpdHlQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSAtIGRlZmF1bHRQcm92aWRlcjo6ZnJvbVNTT1wiKTtcbiAgICAgICAgY29uc3QgeyBzc29TdGFydFVybCwgc3NvQWNjb3VudElkLCBzc29SZWdpb24sIHNzb1JvbGVOYW1lLCBzc29TZXNzaW9uIH0gPSBpbml0O1xuICAgICAgICBpZiAoIXNzb1N0YXJ0VXJsICYmICFzc29BY2NvdW50SWQgJiYgIXNzb1JlZ2lvbiAmJiAhc3NvUm9sZU5hbWUgJiYgIXNzb1Nlc3Npb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcIlNraXBwaW5nIFNTTyBwcm92aWRlciBpbiBkZWZhdWx0IGNoYWluIChpbnB1dHMgZG8gbm90IGluY2x1ZGUgU1NPIGZpZWxkcykuXCIsIHsgbG9nZ2VyOiBpbml0LmxvZ2dlciB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGZyb21TU08gfSA9IGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1zc28nKTtcbiAgICAgICAgcmV0dXJuIGZyb21TU08oaW5pdCkoYXdzSWRlbnRpdHlQcm9wZXJ0aWVzKTtcbiAgICB9LFxuICAgIGFzeW5jIChhd3NJZGVudGl0eVByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgaW5pdC5sb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1ub2RlIC0gZGVmYXVsdFByb3ZpZGVyOjpmcm9tSW5pXCIpO1xuICAgICAgICBjb25zdCB7IGZyb21JbmkgfSA9IGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmknKTtcbiAgICAgICAgcmV0dXJuIGZyb21JbmkoaW5pdCkoYXdzSWRlbnRpdHlQcm9wZXJ0aWVzKTtcbiAgICB9LFxuICAgIGFzeW5jIChhd3NJZGVudGl0eVByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgaW5pdC5sb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1ub2RlIC0gZGVmYXVsdFByb3ZpZGVyOjpmcm9tUHJvY2Vzc1wiKTtcbiAgICAgICAgY29uc3QgeyBmcm9tUHJvY2VzcyB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLXByb2Nlc3MnKTtcbiAgICAgICAgcmV0dXJuIGZyb21Qcm9jZXNzKGluaXQpKGF3c0lkZW50aXR5UHJvcGVydGllcyk7XG4gICAgfSxcbiAgICBhc3luYyAoYXdzSWRlbnRpdHlQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSAtIGRlZmF1bHRQcm92aWRlcjo6ZnJvbVRva2VuRmlsZVwiKTtcbiAgICAgICAgY29uc3QgeyBmcm9tVG9rZW5GaWxlIH0gPSBhd2FpdCBpbXBvcnQoJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItd2ViLWlkZW50aXR5Jyk7XG4gICAgICAgIHJldHVybiBmcm9tVG9rZW5GaWxlKGluaXQpKGF3c0lkZW50aXR5UHJvcGVydGllcyk7XG4gICAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSAtIGRlZmF1bHRQcm92aWRlcjo6cmVtb3RlUHJvdmlkZXJcIik7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcmVtb3RlUHJvdmlkZXIoaW5pdCkpKCk7XG4gICAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcIkNvdWxkIG5vdCBsb2FkIGNyZWRlbnRpYWxzIGZyb20gYW55IHByb3ZpZGVyc1wiLCB7XG4gICAgICAgICAgICB0cnlOZXh0TGluazogZmFsc2UsXG4gICAgICAgICAgICBsb2dnZXI6IGluaXQubG9nZ2VyLFxuICAgICAgICB9KTtcbiAgICB9LFxuXSwgY3JlZGVudGlhbHNUcmVhdGVkQXNFeHBpcmVkKTtcbmNvbnN0IGNyZWRlbnRpYWxzV2lsbE5lZWRSZWZyZXNoID0gKGNyZWRlbnRpYWxzKSA9PiBjcmVkZW50aWFscz8uZXhwaXJhdGlvbiAhPT0gdW5kZWZpbmVkO1xuY29uc3QgY3JlZGVudGlhbHNUcmVhdGVkQXNFeHBpcmVkID0gKGNyZWRlbnRpYWxzKSA9PiBjcmVkZW50aWFscz8uZXhwaXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmIGNyZWRlbnRpYWxzLmV4cGlyYXRpb24uZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA8IDMwMDAwMDtcblxuZXhwb3J0cy5jcmVkZW50aWFsc1RyZWF0ZWRBc0V4cGlyZWQgPSBjcmVkZW50aWFsc1RyZWF0ZWRBc0V4cGlyZWQ7XG5leHBvcnRzLmNyZWRlbnRpYWxzV2lsbE5lZWRSZWZyZXNoID0gY3JlZGVudGlhbHNXaWxsTmVlZFJlZnJlc2g7XG5leHBvcnRzLmRlZmF1bHRQcm92aWRlciA9IGRlZmF1bHRQcm92aWRlcjtcbiIsCiAgICAidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIGlzQXJyYXlCdWZmZXI6ICgpID0+IGlzQXJyYXlCdWZmZXJcbn0pO1xubW9kdWxlLmV4cG9ydHMgPSBfX3RvQ29tbW9uSlMoc3JjX2V4cG9ydHMpO1xudmFyIGlzQXJyYXlCdWZmZXIgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChhcmcpID0+IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gXCJmdW5jdGlvblwiICYmIGFyZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmcpID09PSBcIltvYmplY3QgQXJyYXlCdWZmZXJdXCIsIFwiaXNBcnJheUJ1ZmZlclwiKTtcbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcblxuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQXJyYXlCdWZmZXJcbn0pO1xuXG4iLAogICAgInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgX19nZXRPd25Qcm9wTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xudmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHtcbiAgaWYgKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGZyb20gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9Db21tb25KUyA9IChtb2QpID0+IF9fY29weVByb3BzKF9fZGVmUHJvcCh7fSwgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIHNyY19leHBvcnRzID0ge307XG5fX2V4cG9ydChzcmNfZXhwb3J0cywge1xuICBmcm9tQXJyYXlCdWZmZXI6ICgpID0+IGZyb21BcnJheUJ1ZmZlcixcbiAgZnJvbVN0cmluZzogKCkgPT4gZnJvbVN0cmluZ1xufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG52YXIgaW1wb3J0X2lzX2FycmF5X2J1ZmZlciA9IHJlcXVpcmUoXCJAc21pdGh5L2lzLWFycmF5LWJ1ZmZlclwiKTtcbnZhciBpbXBvcnRfYnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcbnZhciBmcm9tQXJyYXlCdWZmZXIgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChpbnB1dCwgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gaW5wdXQuYnl0ZUxlbmd0aCAtIG9mZnNldCkgPT4ge1xuICBpZiAoISgwLCBpbXBvcnRfaXNfYXJyYXlfYnVmZmVyLmlzQXJyYXlCdWZmZXIpKGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFRoZSBcImlucHV0XCIgYXJndW1lbnQgbXVzdCBiZSBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBpbnB1dH0gKCR7aW5wdXR9KWApO1xuICB9XG4gIHJldHVybiBpbXBvcnRfYnVmZmVyLkJ1ZmZlci5mcm9tKGlucHV0LCBvZmZzZXQsIGxlbmd0aCk7XG59LCBcImZyb21BcnJheUJ1ZmZlclwiKTtcbnZhciBmcm9tU3RyaW5nID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoaW5wdXQsIGVuY29kaW5nKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBUaGUgXCJpbnB1dFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgaW5wdXR9ICgke2lucHV0fSlgKTtcbiAgfVxuICByZXR1cm4gZW5jb2RpbmcgPyBpbXBvcnRfYnVmZmVyLkJ1ZmZlci5mcm9tKGlucHV0LCBlbmNvZGluZykgOiBpbXBvcnRfYnVmZmVyLkJ1ZmZlci5mcm9tKGlucHV0KTtcbn0sIFwiZnJvbVN0cmluZ1wiKTtcbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcblxuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZyb21BcnJheUJ1ZmZlcixcbiAgZnJvbVN0cmluZ1xufSk7XG5cbiIsCiAgICAidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIGZyb21VdGY4OiAoKSA9PiBmcm9tVXRmOCxcbiAgdG9VaW50OEFycmF5OiAoKSA9PiB0b1VpbnQ4QXJyYXksXG4gIHRvVXRmODogKCkgPT4gdG9VdGY4XG59KTtcbm1vZHVsZS5leHBvcnRzID0gX190b0NvbW1vbkpTKHNyY19leHBvcnRzKTtcblxuLy8gc3JjL2Zyb21VdGY4LnRzXG52YXIgaW1wb3J0X3V0aWxfYnVmZmVyX2Zyb20gPSByZXF1aXJlKFwiQHNtaXRoeS91dGlsLWJ1ZmZlci1mcm9tXCIpO1xudmFyIGZyb21VdGY4ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoaW5wdXQpID0+IHtcbiAgY29uc3QgYnVmID0gKDAsIGltcG9ydF91dGlsX2J1ZmZlcl9mcm9tLmZyb21TdHJpbmcpKGlucHV0LCBcInV0ZjhcIik7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShidWYuYnVmZmVyLCBidWYuYnl0ZU9mZnNldCwgYnVmLmJ5dGVMZW5ndGggLyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UKTtcbn0sIFwiZnJvbVV0ZjhcIik7XG5cbi8vIHNyYy90b1VpbnQ4QXJyYXkudHNcbnZhciB0b1VpbnQ4QXJyYXkgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChkYXRhKSA9PiB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmcm9tVXRmOChkYXRhKTtcbiAgfVxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRhdGEuYnVmZmVyLCBkYXRhLmJ5dGVPZmZzZXQsIGRhdGEuYnl0ZUxlbmd0aCAvIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQpO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn0sIFwidG9VaW50OEFycmF5XCIpO1xuXG4vLyBzcmMvdG9VdGY4LnRzXG5cbnZhciB0b1V0ZjggPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChpbnB1dCkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGlucHV0LmJ5dGVPZmZzZXQgIT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGlucHV0LmJ5dGVMZW5ndGggIT09IFwibnVtYmVyXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJAc21pdGh5L3V0aWwtdXRmODogdG9VdGY4IGVuY29kZXIgZnVuY3Rpb24gb25seSBhY2NlcHRzIHN0cmluZyB8IFVpbnQ4QXJyYXkuXCIpO1xuICB9XG4gIHJldHVybiAoMCwgaW1wb3J0X3V0aWxfYnVmZmVyX2Zyb20uZnJvbUFycmF5QnVmZmVyKShpbnB1dC5idWZmZXIsIGlucHV0LmJ5dGVPZmZzZXQsIGlucHV0LmJ5dGVMZW5ndGgpLnRvU3RyaW5nKFwidXRmOFwiKTtcbn0sIFwidG9VdGY4XCIpO1xuLy8gQW5ub3RhdGUgdGhlIENvbW1vbkpTIGV4cG9ydCBuYW1lcyBmb3IgRVNNIGltcG9ydCBpbiBub2RlOlxuXG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZnJvbVV0ZjgsXG4gIHRvVWludDhBcnJheSxcbiAgdG9VdGY4XG59KTtcblxuIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbi8vIENvcHlyaWdodCBBbWF6b24uY29tIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jb252ZXJ0VG9CdWZmZXIgPSB2b2lkIDA7XG52YXIgdXRpbF91dGY4XzEgPSByZXF1aXJlKFwiQHNtaXRoeS91dGlsLXV0ZjhcIik7XG4vLyBRdWljayBwb2x5ZmlsbFxudmFyIGZyb21VdGY4ID0gdHlwZW9mIEJ1ZmZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBCdWZmZXIuZnJvbVxuICAgID8gZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBCdWZmZXIuZnJvbShpbnB1dCwgXCJ1dGY4XCIpOyB9XG4gICAgOiB1dGlsX3V0ZjhfMS5mcm9tVXRmODtcbmZ1bmN0aW9uIGNvbnZlcnRUb0J1ZmZlcihkYXRhKSB7XG4gICAgLy8gQWxyZWFkeSBhIFVpbnQ4LCBkbyBub3RoaW5nXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGZyb21VdGY4KGRhdGEpO1xuICAgIH1cbiAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCBkYXRhLmJ5dGVMZW5ndGggLyBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRhdGEpO1xufVxuZXhwb3J0cy5jb252ZXJ0VG9CdWZmZXIgPSBjb252ZXJ0VG9CdWZmZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb252ZXJ0VG9CdWZmZXIuanMubWFwIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbi8vIENvcHlyaWdodCBBbWF6b24uY29tIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc0VtcHR5RGF0YSA9IHZvaWQgMDtcbmZ1bmN0aW9uIGlzRW1wdHlEYXRhKGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoID09PSAwO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5ieXRlTGVuZ3RoID09PSAwO1xufVxuZXhwb3J0cy5pc0VtcHR5RGF0YSA9IGlzRW1wdHlEYXRhO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNFbXB0eURhdGEuanMubWFwIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbi8vIENvcHlyaWdodCBBbWF6b24uY29tIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5udW1Ub1VpbnQ4ID0gdm9pZCAwO1xuZnVuY3Rpb24gbnVtVG9VaW50OChudW0pIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgICAobnVtICYgMHhmZjAwMDAwMCkgPj4gMjQsXG4gICAgICAgIChudW0gJiAweDAwZmYwMDAwKSA+PiAxNixcbiAgICAgICAgKG51bSAmIDB4MDAwMGZmMDApID4+IDgsXG4gICAgICAgIG51bSAmIDB4MDAwMDAwZmYsXG4gICAgXSk7XG59XG5leHBvcnRzLm51bVRvVWludDggPSBudW1Ub1VpbnQ4O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bnVtVG9VaW50OC5qcy5tYXAiLAogICAgIlwidXNlIHN0cmljdFwiO1xuLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20gSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVpbnQzMkFycmF5RnJvbSA9IHZvaWQgMDtcbi8vIElFIDExIGRvZXMgbm90IHN1cHBvcnQgQXJyYXkuZnJvbSwgc28gd2UgZG8gaXQgbWFudWFsbHlcbmZ1bmN0aW9uIHVpbnQzMkFycmF5RnJvbShhX2xvb2tVcFRhYmxlKSB7XG4gICAgaWYgKCFVaW50MzJBcnJheS5mcm9tKSB7XG4gICAgICAgIHZhciByZXR1cm5fYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoYV9sb29rVXBUYWJsZS5sZW5ndGgpO1xuICAgICAgICB2YXIgYV9pbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChhX2luZGV4IDwgYV9sb29rVXBUYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybl9hcnJheVthX2luZGV4XSA9IGFfbG9va1VwVGFibGVbYV9pbmRleF07XG4gICAgICAgICAgICBhX2luZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldHVybl9hcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIFVpbnQzMkFycmF5LmZyb20oYV9sb29rVXBUYWJsZSk7XG59XG5leHBvcnRzLnVpbnQzMkFycmF5RnJvbSA9IHVpbnQzMkFycmF5RnJvbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVpbnQzMkFycmF5RnJvbS5qcy5tYXAiLAogICAgIlwidXNlIHN0cmljdFwiO1xuLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20gSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVpbnQzMkFycmF5RnJvbSA9IGV4cG9ydHMubnVtVG9VaW50OCA9IGV4cG9ydHMuaXNFbXB0eURhdGEgPSBleHBvcnRzLmNvbnZlcnRUb0J1ZmZlciA9IHZvaWQgMDtcbnZhciBjb252ZXJ0VG9CdWZmZXJfMSA9IHJlcXVpcmUoXCIuL2NvbnZlcnRUb0J1ZmZlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbnZlcnRUb0J1ZmZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29udmVydFRvQnVmZmVyXzEuY29udmVydFRvQnVmZmVyOyB9IH0pO1xudmFyIGlzRW1wdHlEYXRhXzEgPSByZXF1aXJlKFwiLi9pc0VtcHR5RGF0YVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImlzRW1wdHlEYXRhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpc0VtcHR5RGF0YV8xLmlzRW1wdHlEYXRhOyB9IH0pO1xudmFyIG51bVRvVWludDhfMSA9IHJlcXVpcmUoXCIuL251bVRvVWludDhcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJudW1Ub1VpbnQ4XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBudW1Ub1VpbnQ4XzEubnVtVG9VaW50ODsgfSB9KTtcbnZhciB1aW50MzJBcnJheUZyb21fMSA9IHJlcXVpcmUoXCIuL3VpbnQzMkFycmF5RnJvbVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVpbnQzMkFycmF5RnJvbVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdWludDMyQXJyYXlGcm9tXzEudWludDMyQXJyYXlGcm9tOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbi8vIENvcHlyaWdodCBBbWF6b24uY29tIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Bd3NDcmMzMiA9IHZvaWQgMDtcbnZhciB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCJAYXdzLWNyeXB0by91dGlsXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbnZhciBBd3NDcmMzMiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBd3NDcmMzMigpIHtcbiAgICAgICAgdGhpcy5jcmMzMiA9IG5ldyBpbmRleF8xLkNyYzMyKCk7XG4gICAgfVxuICAgIEF3c0NyYzMyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAodG9IYXNoKSB7XG4gICAgICAgIGlmICgoMCwgdXRpbF8xLmlzRW1wdHlEYXRhKSh0b0hhc2gpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNyYzMyLnVwZGF0ZSgoMCwgdXRpbF8xLmNvbnZlcnRUb0J1ZmZlcikodG9IYXNoKSk7XG4gICAgfTtcbiAgICBBd3NDcmMzMi5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHNsaWJfMS5fX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0c2xpYl8xLl9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCAoMCwgdXRpbF8xLm51bVRvVWludDgpKHRoaXMuY3JjMzIuZGlnZXN0KCkpXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEF3c0NyYzMyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jcmMzMiA9IG5ldyBpbmRleF8xLkNyYzMyKCk7XG4gICAgfTtcbiAgICByZXR1cm4gQXdzQ3JjMzI7XG59KCkpO1xuZXhwb3J0cy5Bd3NDcmMzMiA9IEF3c0NyYzMyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXdzX2NyYzMyLmpzLm1hcCIsCiAgICAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkF3c0NyYzMyID0gZXhwb3J0cy5DcmMzMiA9IGV4cG9ydHMuY3JjMzIgPSB2b2lkIDA7XG52YXIgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiQGF3cy1jcnlwdG8vdXRpbFwiKTtcbmZ1bmN0aW9uIGNyYzMyKGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENyYzMyKCkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xufVxuZXhwb3J0cy5jcmMzMiA9IGNyYzMyO1xudmFyIENyYzMyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENyYzMyKCkge1xuICAgICAgICB0aGlzLmNoZWNrc3VtID0gMHhmZmZmZmZmZjtcbiAgICB9XG4gICAgQ3JjMzIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YV8xID0gdHNsaWJfMS5fX3ZhbHVlcyhkYXRhKSwgZGF0YV8xXzEgPSBkYXRhXzEubmV4dCgpOyAhZGF0YV8xXzEuZG9uZTsgZGF0YV8xXzEgPSBkYXRhXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRhXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrc3VtID1cbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY2hlY2tzdW0gPj4+IDgpIF4gbG9va3VwVGFibGVbKHRoaXMuY2hlY2tzdW0gXiBieXRlKSAmIDB4ZmZdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YV8xXzEgJiYgIWRhdGFfMV8xLmRvbmUgJiYgKF9hID0gZGF0YV8xLnJldHVybikpIF9hLmNhbGwoZGF0YV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIENyYzMyLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5jaGVja3N1bSBeIDB4ZmZmZmZmZmYpID4+PiAwO1xuICAgIH07XG4gICAgcmV0dXJuIENyYzMyO1xufSgpKTtcbmV4cG9ydHMuQ3JjMzIgPSBDcmMzMjtcbi8vIHByZXR0aWVyLWlnbm9yZVxudmFyIGFfbG9va1VwVGFibGUgPSBbXG4gICAgMHgwMDAwMDAwMCwgMHg3NzA3MzA5NiwgMHhFRTBFNjEyQywgMHg5OTA5NTFCQSxcbiAgICAweDA3NkRDNDE5LCAweDcwNkFGNDhGLCAweEU5NjNBNTM1LCAweDlFNjQ5NUEzLFxuICAgIDB4MEVEQjg4MzIsIDB4NzlEQ0I4QTQsIDB4RTBENUU5MUUsIDB4OTdEMkQ5ODgsXG4gICAgMHgwOUI2NEMyQiwgMHg3RUIxN0NCRCwgMHhFN0I4MkQwNywgMHg5MEJGMUQ5MSxcbiAgICAweDFEQjcxMDY0LCAweDZBQjAyMEYyLCAweEYzQjk3MTQ4LCAweDg0QkU0MURFLFxuICAgIDB4MUFEQUQ0N0QsIDB4NkREREU0RUIsIDB4RjRENEI1NTEsIDB4ODNEMzg1QzcsXG4gICAgMHgxMzZDOTg1NiwgMHg2NDZCQThDMCwgMHhGRDYyRjk3QSwgMHg4QTY1QzlFQyxcbiAgICAweDE0MDE1QzRGLCAweDYzMDY2Q0Q5LCAweEZBMEYzRDYzLCAweDhEMDgwREY1LFxuICAgIDB4M0I2RTIwQzgsIDB4NEM2OTEwNUUsIDB4RDU2MDQxRTQsIDB4QTI2NzcxNzIsXG4gICAgMHgzQzAzRTREMSwgMHg0QjA0RDQ0NywgMHhEMjBEODVGRCwgMHhBNTBBQjU2QixcbiAgICAweDM1QjVBOEZBLCAweDQyQjI5ODZDLCAweERCQkJDOUQ2LCAweEFDQkNGOTQwLFxuICAgIDB4MzJEODZDRTMsIDB4NDVERjVDNzUsIDB4RENENjBEQ0YsIDB4QUJEMTNENTksXG4gICAgMHgyNkQ5MzBBQywgMHg1MURFMDAzQSwgMHhDOEQ3NTE4MCwgMHhCRkQwNjExNixcbiAgICAweDIxQjRGNEI1LCAweDU2QjNDNDIzLCAweENGQkE5NTk5LCAweEI4QkRBNTBGLFxuICAgIDB4MjgwMkI4OUUsIDB4NUYwNTg4MDgsIDB4QzYwQ0Q5QjIsIDB4QjEwQkU5MjQsXG4gICAgMHgyRjZGN0M4NywgMHg1ODY4NEMxMSwgMHhDMTYxMURBQiwgMHhCNjY2MkQzRCxcbiAgICAweDc2REM0MTkwLCAweDAxREI3MTA2LCAweDk4RDIyMEJDLCAweEVGRDUxMDJBLFxuICAgIDB4NzFCMTg1ODksIDB4MDZCNkI1MUYsIDB4OUZCRkU0QTUsIDB4RThCOEQ0MzMsXG4gICAgMHg3ODA3QzlBMiwgMHgwRjAwRjkzNCwgMHg5NjA5QTg4RSwgMHhFMTBFOTgxOCxcbiAgICAweDdGNkEwREJCLCAweDA4NkQzRDJELCAweDkxNjQ2Qzk3LCAweEU2NjM1QzAxLFxuICAgIDB4NkI2QjUxRjQsIDB4MUM2QzYxNjIsIDB4ODU2NTMwRDgsIDB4RjI2MjAwNEUsXG4gICAgMHg2QzA2OTVFRCwgMHgxQjAxQTU3QiwgMHg4MjA4RjRDMSwgMHhGNTBGQzQ1NyxcbiAgICAweDY1QjBEOUM2LCAweDEyQjdFOTUwLCAweDhCQkVCOEVBLCAweEZDQjk4ODdDLFxuICAgIDB4NjJERDFEREYsIDB4MTVEQTJENDksIDB4OENEMzdDRjMsIDB4RkJENDRDNjUsXG4gICAgMHg0REIyNjE1OCwgMHgzQUI1NTFDRSwgMHhBM0JDMDA3NCwgMHhENEJCMzBFMixcbiAgICAweDRBREZBNTQxLCAweDNERDg5NUQ3LCAweEE0RDFDNDZELCAweEQzRDZGNEZCLFxuICAgIDB4NDM2OUU5NkEsIDB4MzQ2RUQ5RkMsIDB4QUQ2Nzg4NDYsIDB4REE2MEI4RDAsXG4gICAgMHg0NDA0MkQ3MywgMHgzMzAzMURFNSwgMHhBQTBBNEM1RiwgMHhERDBEN0NDOSxcbiAgICAweDUwMDU3MTNDLCAweDI3MDI0MUFBLCAweEJFMEIxMDEwLCAweEM5MEMyMDg2LFxuICAgIDB4NTc2OEI1MjUsIDB4MjA2Rjg1QjMsIDB4Qjk2NkQ0MDksIDB4Q0U2MUU0OUYsXG4gICAgMHg1RURFRjkwRSwgMHgyOUQ5Qzk5OCwgMHhCMEQwOTgyMiwgMHhDN0Q3QThCNCxcbiAgICAweDU5QjMzRDE3LCAweDJFQjQwRDgxLCAweEI3QkQ1QzNCLCAweEMwQkE2Q0FELFxuICAgIDB4RURCODgzMjAsIDB4OUFCRkIzQjYsIDB4MDNCNkUyMEMsIDB4NzRCMUQyOUEsXG4gICAgMHhFQUQ1NDczOSwgMHg5REQyNzdBRiwgMHgwNERCMjYxNSwgMHg3M0RDMTY4MyxcbiAgICAweEUzNjMwQjEyLCAweDk0NjQzQjg0LCAweDBENkQ2QTNFLCAweDdBNkE1QUE4LFxuICAgIDB4RTQwRUNGMEIsIDB4OTMwOUZGOUQsIDB4MEEwMEFFMjcsIDB4N0QwNzlFQjEsXG4gICAgMHhGMDBGOTM0NCwgMHg4NzA4QTNEMiwgMHgxRTAxRjI2OCwgMHg2OTA2QzJGRSxcbiAgICAweEY3NjI1NzVELCAweDgwNjU2N0NCLCAweDE5NkMzNjcxLCAweDZFNkIwNkU3LFxuICAgIDB4RkVENDFCNzYsIDB4ODlEMzJCRTAsIDB4MTBEQTdBNUEsIDB4NjdERDRBQ0MsXG4gICAgMHhGOUI5REY2RiwgMHg4RUJFRUZGOSwgMHgxN0I3QkU0MywgMHg2MEIwOEVENSxcbiAgICAweEQ2RDZBM0U4LCAweEExRDE5MzdFLCAweDM4RDhDMkM0LCAweDRGREZGMjUyLFxuICAgIDB4RDFCQjY3RjEsIDB4QTZCQzU3NjcsIDB4M0ZCNTA2REQsIDB4NDhCMjM2NEIsXG4gICAgMHhEODBEMkJEQSwgMHhBRjBBMUI0QywgMHgzNjAzNEFGNiwgMHg0MTA0N0E2MCxcbiAgICAweERGNjBFRkMzLCAweEE4NjdERjU1LCAweDMxNkU4RUVGLCAweDQ2NjlCRTc5LFxuICAgIDB4Q0I2MUIzOEMsIDB4QkM2NjgzMUEsIDB4MjU2RkQyQTAsIDB4NTI2OEUyMzYsXG4gICAgMHhDQzBDNzc5NSwgMHhCQjBCNDcwMywgMHgyMjAyMTZCOSwgMHg1NTA1MjYyRixcbiAgICAweEM1QkEzQkJFLCAweEIyQkQwQjI4LCAweDJCQjQ1QTkyLCAweDVDQjM2QTA0LFxuICAgIDB4QzJEN0ZGQTcsIDB4QjVEMENGMzEsIDB4MkNEOTlFOEIsIDB4NUJERUFFMUQsXG4gICAgMHg5QjY0QzJCMCwgMHhFQzYzRjIyNiwgMHg3NTZBQTM5QywgMHgwMjZEOTMwQSxcbiAgICAweDlDMDkwNkE5LCAweEVCMEUzNjNGLCAweDcyMDc2Nzg1LCAweDA1MDA1NzEzLFxuICAgIDB4OTVCRjRBODIsIDB4RTJCODdBMTQsIDB4N0JCMTJCQUUsIDB4MENCNjFCMzgsXG4gICAgMHg5MkQyOEU5QiwgMHhFNUQ1QkUwRCwgMHg3Q0RDRUZCNywgMHgwQkRCREYyMSxcbiAgICAweDg2RDNEMkQ0LCAweEYxRDRFMjQyLCAweDY4RERCM0Y4LCAweDFGREE4MzZFLFxuICAgIDB4ODFCRTE2Q0QsIDB4RjZCOTI2NUIsIDB4NkZCMDc3RTEsIDB4MThCNzQ3NzcsXG4gICAgMHg4ODA4NUFFNiwgMHhGRjBGNkE3MCwgMHg2NjA2M0JDQSwgMHgxMTAxMEI1QyxcbiAgICAweDhGNjU5RUZGLCAweEY4NjJBRTY5LCAweDYxNkJGRkQzLCAweDE2NkNDRjQ1LFxuICAgIDB4QTAwQUUyNzgsIDB4RDcwREQyRUUsIDB4NEUwNDgzNTQsIDB4MzkwM0IzQzIsXG4gICAgMHhBNzY3MjY2MSwgMHhEMDYwMTZGNywgMHg0OTY5NDc0RCwgMHgzRTZFNzdEQixcbiAgICAweEFFRDE2QTRBLCAweEQ5RDY1QURDLCAweDQwREYwQjY2LCAweDM3RDgzQkYwLFxuICAgIDB4QTlCQ0FFNTMsIDB4REVCQjlFQzUsIDB4NDdCMkNGN0YsIDB4MzBCNUZGRTksXG4gICAgMHhCREJERjIxQywgMHhDQUJBQzI4QSwgMHg1M0IzOTMzMCwgMHgyNEI0QTNBNixcbiAgICAweEJBRDAzNjA1LCAweENERDcwNjkzLCAweDU0REU1NzI5LCAweDIzRDk2N0JGLFxuICAgIDB4QjM2NjdBMkUsIDB4QzQ2MTRBQjgsIDB4NUQ2ODFCMDIsIDB4MkE2RjJCOTQsXG4gICAgMHhCNDBCQkUzNywgMHhDMzBDOEVBMSwgMHg1QTA1REYxQiwgMHgyRDAyRUY4RCxcbl07XG52YXIgbG9va3VwVGFibGUgPSAoMCwgdXRpbF8xLnVpbnQzMkFycmF5RnJvbSkoYV9sb29rVXBUYWJsZSk7XG52YXIgYXdzX2NyYzMyXzEgPSByZXF1aXJlKFwiLi9hd3NfY3JjMzJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBd3NDcmMzMlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYXdzX2NyYzMyXzEuQXdzQ3JjMzI7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLAogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIGNyYzMyID0gcmVxdWlyZSgnQGF3cy1jcnlwdG8vY3JjMzInKTtcbnZhciB1dGlsSGV4RW5jb2RpbmcgPSByZXF1aXJlKCdAc21pdGh5L3V0aWwtaGV4LWVuY29kaW5nJyk7XG5cbmNsYXNzIEludDY0IHtcbiAgICBieXRlcztcbiAgICBjb25zdHJ1Y3RvcihieXRlcykge1xuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXM7XG4gICAgICAgIGlmIChieXRlcy5ieXRlTGVuZ3RoICE9PSA4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnQ2NCBidWZmZXJzIG11c3QgYmUgZXhhY3RseSA4IGJ5dGVzXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTnVtYmVyKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID4gOV8yMjNfMzcyXzAzNl84NTRfNzc1XzgwNyB8fCBudW1iZXIgPCAtOTIyMzM3MjAzNjg1NDc3NmUzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bnVtYmVyfSBpcyB0b28gbGFyZ2UgKG9yLCBpZiBuZWdhdGl2ZSwgdG9vIHNtYWxsKSB0byByZXByZXNlbnQgYXMgYW4gSW50NjRgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KDgpO1xuICAgICAgICBmb3IgKGxldCBpID0gNywgcmVtYWluaW5nID0gTWF0aC5hYnMoTWF0aC5yb3VuZChudW1iZXIpKTsgaSA+IC0xICYmIHJlbWFpbmluZyA+IDA7IGktLSwgcmVtYWluaW5nIC89IDI1Nikge1xuICAgICAgICAgICAgYnl0ZXNbaV0gPSByZW1haW5pbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIG5lZ2F0ZShieXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBJbnQ2NChieXRlcyk7XG4gICAgfVxuICAgIHZhbHVlT2YoKSB7XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5ieXRlcy5zbGljZSgwKTtcbiAgICAgICAgY29uc3QgbmVnYXRpdmUgPSBieXRlc1swXSAmIDBiMTAwMDAwMDA7XG4gICAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICAgICAgbmVnYXRlKGJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodXRpbEhleEVuY29kaW5nLnRvSGV4KGJ5dGVzKSwgMTYpICogKG5lZ2F0aXZlID8gLTEgOiAxKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG5lZ2F0ZShieXRlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGJ5dGVzW2ldIF49IDB4ZmY7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSA3OyBpID4gLTE7IGktLSkge1xuICAgICAgICBieXRlc1tpXSsrO1xuICAgICAgICBpZiAoYnl0ZXNbaV0gIT09IDApXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59XG5cbmNsYXNzIEhlYWRlck1hcnNoYWxsZXIge1xuICAgIHRvVXRmODtcbiAgICBmcm9tVXRmODtcbiAgICBjb25zdHJ1Y3Rvcih0b1V0ZjgsIGZyb21VdGY4KSB7XG4gICAgICAgIHRoaXMudG9VdGY4ID0gdG9VdGY4O1xuICAgICAgICB0aGlzLmZyb21VdGY4ID0gZnJvbVV0Zjg7XG4gICAgfVxuICAgIGZvcm1hdChoZWFkZXJzKSB7XG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGhlYWRlck5hbWUgb2YgT2JqZWN0LmtleXMoaGVhZGVycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5mcm9tVXRmOChoZWFkZXJOYW1lKTtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKFVpbnQ4QXJyYXkuZnJvbShbYnl0ZXMuYnl0ZUxlbmd0aF0pLCBieXRlcywgdGhpcy5mb3JtYXRIZWFkZXJWYWx1ZShoZWFkZXJzW2hlYWRlck5hbWVdKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmtzLnJlZHVjZSgoY2FycnksIGJ5dGVzKSA9PiBjYXJyeSArIGJ5dGVzLmJ5dGVMZW5ndGgsIDApKTtcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICAgICAgICAgIG91dC5zZXQoY2h1bmssIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIHBvc2l0aW9uICs9IGNodW5rLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgZm9ybWF0SGVhZGVyVmFsdWUoaGVhZGVyKSB7XG4gICAgICAgIHN3aXRjaCAoaGVhZGVyLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbaGVhZGVyLnZhbHVlID8gMCA6IDFdKTtcbiAgICAgICAgICAgIGNhc2UgXCJieXRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbMiwgaGVhZGVyLnZhbHVlXSk7XG4gICAgICAgICAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgICAgICAgICAgICBjb25zdCBzaG9ydFZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDMpKTtcbiAgICAgICAgICAgICAgICBzaG9ydFZpZXcuc2V0VWludDgoMCwgMyk7XG4gICAgICAgICAgICAgICAgc2hvcnRWaWV3LnNldEludDE2KDEsIGhlYWRlci52YWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShzaG9ydFZpZXcuYnVmZmVyKTtcbiAgICAgICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICAgICAgICAgICAgY29uc3QgaW50VmlldyA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoNSkpO1xuICAgICAgICAgICAgICAgIGludFZpZXcuc2V0VWludDgoMCwgNCk7XG4gICAgICAgICAgICAgICAgaW50Vmlldy5zZXRJbnQzMigxLCBoZWFkZXIudmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaW50Vmlldy5idWZmZXIpO1xuICAgICAgICAgICAgY2FzZSBcImxvbmdcIjpcbiAgICAgICAgICAgICAgICBjb25zdCBsb25nQnl0ZXMgPSBuZXcgVWludDhBcnJheSg5KTtcbiAgICAgICAgICAgICAgICBsb25nQnl0ZXNbMF0gPSA1O1xuICAgICAgICAgICAgICAgIGxvbmdCeXRlcy5zZXQoaGVhZGVyLnZhbHVlLmJ5dGVzLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ0J5dGVzO1xuICAgICAgICAgICAgY2FzZSBcImJpbmFyeVwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IGJpblZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDMgKyBoZWFkZXIudmFsdWUuYnl0ZUxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGJpblZpZXcuc2V0VWludDgoMCwgNik7XG4gICAgICAgICAgICAgICAgYmluVmlldy5zZXRVaW50MTYoMSwgaGVhZGVyLnZhbHVlLmJ5dGVMZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5CeXRlcyA9IG5ldyBVaW50OEFycmF5KGJpblZpZXcuYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBiaW5CeXRlcy5zZXQoaGVhZGVyLnZhbHVlLCAzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmluQnl0ZXM7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgY29uc3QgdXRmOEJ5dGVzID0gdGhpcy5mcm9tVXRmOChoZWFkZXIudmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0clZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDMgKyB1dGY4Qnl0ZXMuYnl0ZUxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIHN0clZpZXcuc2V0VWludDgoMCwgNyk7XG4gICAgICAgICAgICAgICAgc3RyVmlldy5zZXRVaW50MTYoMSwgdXRmOEJ5dGVzLmJ5dGVMZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHJCeXRlcyA9IG5ldyBVaW50OEFycmF5KHN0clZpZXcuYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBzdHJCeXRlcy5zZXQodXRmOEJ5dGVzLCAzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyQnl0ZXM7XG4gICAgICAgICAgICBjYXNlIFwidGltZXN0YW1wXCI6XG4gICAgICAgICAgICAgICAgY29uc3QgdHNCeXRlcyA9IG5ldyBVaW50OEFycmF5KDkpO1xuICAgICAgICAgICAgICAgIHRzQnl0ZXNbMF0gPSA4O1xuICAgICAgICAgICAgICAgIHRzQnl0ZXMuc2V0KEludDY0LmZyb21OdW1iZXIoaGVhZGVyLnZhbHVlLnZhbHVlT2YoKSkuYnl0ZXMsIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0c0J5dGVzO1xuICAgICAgICAgICAgY2FzZSBcInV1aWRcIjpcbiAgICAgICAgICAgICAgICBpZiAoIVVVSURfUEFUVEVSTi50ZXN0KGhlYWRlci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgcmVjZWl2ZWQ6ICR7aGVhZGVyLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkQnl0ZXMgPSBuZXcgVWludDhBcnJheSgxNyk7XG4gICAgICAgICAgICAgICAgdXVpZEJ5dGVzWzBdID0gOTtcbiAgICAgICAgICAgICAgICB1dWlkQnl0ZXMuc2V0KHV0aWxIZXhFbmNvZGluZy5mcm9tSGV4KGhlYWRlci52YWx1ZS5yZXBsYWNlKC9cXC0vZywgXCJcIikpLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXVpZEJ5dGVzO1xuICAgICAgICB9XG4gICAgfVxuICAgIHBhcnNlKGhlYWRlcnMpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0ge307XG4gICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGhlYWRlcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmFtZUxlbmd0aCA9IGhlYWRlcnMuZ2V0VWludDgocG9zaXRpb24rKyk7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy50b1V0ZjgobmV3IFVpbnQ4QXJyYXkoaGVhZGVycy5idWZmZXIsIGhlYWRlcnMuYnl0ZU9mZnNldCArIHBvc2l0aW9uLCBuYW1lTGVuZ3RoKSk7XG4gICAgICAgICAgICBwb3NpdGlvbiArPSBuYW1lTGVuZ3RoO1xuICAgICAgICAgICAgc3dpdGNoIChoZWFkZXJzLmdldFVpbnQ4KHBvc2l0aW9uKyspKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBCT09MRUFOX1RBRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEJPT0xFQU5fVEFHLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEJZVEVfVEFHLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGhlYWRlcnMuZ2V0SW50OChwb3NpdGlvbisrKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTSE9SVF9UQUcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaGVhZGVycy5nZXRJbnQxNihwb3NpdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IElOVF9UQUcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaGVhZGVycy5nZXRJbnQzMihwb3NpdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSA0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IExPTkdfVEFHLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBJbnQ2NChuZXcgVWludDhBcnJheShoZWFkZXJzLmJ1ZmZlciwgaGVhZGVycy5ieXRlT2Zmc2V0ICsgcG9zaXRpb24sIDgpKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gODtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiaW5hcnlMZW5ndGggPSBoZWFkZXJzLmdldFVpbnQxNihwb3NpdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSAyO1xuICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBCSU5BUllfVEFHLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KGhlYWRlcnMuYnVmZmVyLCBoZWFkZXJzLmJ5dGVPZmZzZXQgKyBwb3NpdGlvbiwgYmluYXJ5TGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gYmluYXJ5TGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ0xlbmd0aCA9IGhlYWRlcnMuZ2V0VWludDE2KHBvc2l0aW9uLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNUUklOR19UQUcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50b1V0ZjgobmV3IFVpbnQ4QXJyYXkoaGVhZGVycy5idWZmZXIsIGhlYWRlcnMuYnl0ZU9mZnNldCArIHBvc2l0aW9uLCBzdHJpbmdMZW5ndGgpKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gc3RyaW5nTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRJTUVTVEFNUF9UQUcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IERhdGUobmV3IEludDY0KG5ldyBVaW50OEFycmF5KGhlYWRlcnMuYnVmZmVyLCBoZWFkZXJzLmJ5dGVPZmZzZXQgKyBwb3NpdGlvbiwgOCkpLnZhbHVlT2YoKSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IDg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXVpZEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaGVhZGVycy5idWZmZXIsIGhlYWRlcnMuYnl0ZU9mZnNldCArIHBvc2l0aW9uLCAxNik7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IDE2O1xuICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBVVUlEX1RBRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBgJHt1dGlsSGV4RW5jb2RpbmcudG9IZXgodXVpZEJ5dGVzLnN1YmFycmF5KDAsIDQpKX0tJHt1dGlsSGV4RW5jb2RpbmcudG9IZXgodXVpZEJ5dGVzLnN1YmFycmF5KDQsIDYpKX0tJHt1dGlsSGV4RW5jb2RpbmcudG9IZXgodXVpZEJ5dGVzLnN1YmFycmF5KDYsIDgpKX0tJHt1dGlsSGV4RW5jb2RpbmcudG9IZXgodXVpZEJ5dGVzLnN1YmFycmF5KDgsIDEwKSl9LSR7dXRpbEhleEVuY29kaW5nLnRvSGV4KHV1aWRCeXRlcy5zdWJhcnJheSgxMCkpfWAsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGhlYWRlciB0eXBlIHRhZ2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuY29uc3QgQk9PTEVBTl9UQUcgPSBcImJvb2xlYW5cIjtcbmNvbnN0IEJZVEVfVEFHID0gXCJieXRlXCI7XG5jb25zdCBTSE9SVF9UQUcgPSBcInNob3J0XCI7XG5jb25zdCBJTlRfVEFHID0gXCJpbnRlZ2VyXCI7XG5jb25zdCBMT05HX1RBRyA9IFwibG9uZ1wiO1xuY29uc3QgQklOQVJZX1RBRyA9IFwiYmluYXJ5XCI7XG5jb25zdCBTVFJJTkdfVEFHID0gXCJzdHJpbmdcIjtcbmNvbnN0IFRJTUVTVEFNUF9UQUcgPSBcInRpbWVzdGFtcFwiO1xuY29uc3QgVVVJRF9UQUcgPSBcInV1aWRcIjtcbmNvbnN0IFVVSURfUEFUVEVSTiA9IC9eW2EtZjAtOV17OH0tW2EtZjAtOV17NH0tW2EtZjAtOV17NH0tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9JC87XG5cbmNvbnN0IFBSRUxVREVfTUVNQkVSX0xFTkdUSCA9IDQ7XG5jb25zdCBQUkVMVURFX0xFTkdUSCA9IFBSRUxVREVfTUVNQkVSX0xFTkdUSCAqIDI7XG5jb25zdCBDSEVDS1NVTV9MRU5HVEggPSA0O1xuY29uc3QgTUlOSU1VTV9NRVNTQUdFX0xFTkdUSCA9IFBSRUxVREVfTEVOR1RIICsgQ0hFQ0tTVU1fTEVOR1RIICogMjtcbmZ1bmN0aW9uIHNwbGl0TWVzc2FnZSh7IGJ5dGVMZW5ndGgsIGJ5dGVPZmZzZXQsIGJ1ZmZlciB9KSB7XG4gICAgaWYgKGJ5dGVMZW5ndGggPCBNSU5JTVVNX01FU1NBR0VfTEVOR1RIKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVkIG1lc3NhZ2UgdG9vIHNob3J0IHRvIGFjY29tbW9kYXRlIGV2ZW50IHN0cmVhbSBtZXNzYWdlIG92ZXJoZWFkXCIpO1xuICAgIH1cbiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7XG4gICAgY29uc3QgbWVzc2FnZUxlbmd0aCA9IHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICBpZiAoYnl0ZUxlbmd0aCAhPT0gbWVzc2FnZUxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZXBvcnRlZCBtZXNzYWdlIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCByZWNlaXZlZCBtZXNzYWdlIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVyTGVuZ3RoID0gdmlldy5nZXRVaW50MzIoUFJFTFVERV9NRU1CRVJfTEVOR1RILCBmYWxzZSk7XG4gICAgY29uc3QgZXhwZWN0ZWRQcmVsdWRlQ2hlY2tzdW0gPSB2aWV3LmdldFVpbnQzMihQUkVMVURFX0xFTkdUSCwgZmFsc2UpO1xuICAgIGNvbnN0IGV4cGVjdGVkTWVzc2FnZUNoZWNrc3VtID0gdmlldy5nZXRVaW50MzIoYnl0ZUxlbmd0aCAtIENIRUNLU1VNX0xFTkdUSCwgZmFsc2UpO1xuICAgIGNvbnN0IGNoZWNrc3VtbWVyID0gbmV3IGNyYzMyLkNyYzMyKCkudXBkYXRlKG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgYnl0ZU9mZnNldCwgUFJFTFVERV9MRU5HVEgpKTtcbiAgICBpZiAoZXhwZWN0ZWRQcmVsdWRlQ2hlY2tzdW0gIT09IGNoZWNrc3VtbWVyLmRpZ2VzdCgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByZWx1ZGUgY2hlY2tzdW0gc3BlY2lmaWVkIGluIHRoZSBtZXNzYWdlICgke2V4cGVjdGVkUHJlbHVkZUNoZWNrc3VtfSkgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGN1bGF0ZWQgQ1JDMzIgY2hlY2tzdW0gKCR7Y2hlY2tzdW1tZXIuZGlnZXN0KCl9KWApO1xuICAgIH1cbiAgICBjaGVja3N1bW1lci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCBieXRlT2Zmc2V0ICsgUFJFTFVERV9MRU5HVEgsIGJ5dGVMZW5ndGggLSAoUFJFTFVERV9MRU5HVEggKyBDSEVDS1NVTV9MRU5HVEgpKSk7XG4gICAgaWYgKGV4cGVjdGVkTWVzc2FnZUNoZWNrc3VtICE9PSBjaGVja3N1bW1lci5kaWdlc3QoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtZXNzYWdlIGNoZWNrc3VtICgke2NoZWNrc3VtbWVyLmRpZ2VzdCgpfSkgZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgJHtleHBlY3RlZE1lc3NhZ2VDaGVja3N1bX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZGVyczogbmV3IERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCArIFBSRUxVREVfTEVOR1RIICsgQ0hFQ0tTVU1fTEVOR1RILCBoZWFkZXJMZW5ndGgpLFxuICAgICAgICBib2R5OiBuZXcgVWludDhBcnJheShidWZmZXIsIGJ5dGVPZmZzZXQgKyBQUkVMVURFX0xFTkdUSCArIENIRUNLU1VNX0xFTkdUSCArIGhlYWRlckxlbmd0aCwgbWVzc2FnZUxlbmd0aCAtIGhlYWRlckxlbmd0aCAtIChQUkVMVURFX0xFTkdUSCArIENIRUNLU1VNX0xFTkdUSCArIENIRUNLU1VNX0xFTkdUSCkpLFxuICAgIH07XG59XG5cbmNsYXNzIEV2ZW50U3RyZWFtQ29kZWMge1xuICAgIGhlYWRlck1hcnNoYWxsZXI7XG4gICAgbWVzc2FnZUJ1ZmZlcjtcbiAgICBpc0VuZE9mU3RyZWFtO1xuICAgIGNvbnN0cnVjdG9yKHRvVXRmOCwgZnJvbVV0ZjgpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJNYXJzaGFsbGVyID0gbmV3IEhlYWRlck1hcnNoYWxsZXIodG9VdGY4LCBmcm9tVXRmOCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJ1ZmZlciA9IFtdO1xuICAgICAgICB0aGlzLmlzRW5kT2ZTdHJlYW0gPSBmYWxzZTtcbiAgICB9XG4gICAgZmVlZChtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJ1ZmZlci5wdXNoKHRoaXMuZGVjb2RlKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgZW5kT2ZTdHJlYW0oKSB7XG4gICAgICAgIHRoaXMuaXNFbmRPZlN0cmVhbSA9IHRydWU7XG4gICAgfVxuICAgIGdldE1lc3NhZ2UoKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VCdWZmZXIucG9wKCk7XG4gICAgICAgIGNvbnN0IGlzRW5kT2ZTdHJlYW0gPSB0aGlzLmlzRW5kT2ZTdHJlYW07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXRNZXNzYWdlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRW5kT2ZTdHJlYW0oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRW5kT2ZTdHJlYW07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRBdmFpbGFibGVNZXNzYWdlcygpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VCdWZmZXI7XG4gICAgICAgIHRoaXMubWVzc2FnZUJ1ZmZlciA9IFtdO1xuICAgICAgICBjb25zdCBpc0VuZE9mU3RyZWFtID0gdGhpcy5pc0VuZE9mU3RyZWFtO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0TWVzc2FnZXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRW5kT2ZTdHJlYW0oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRW5kT2ZTdHJlYW07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbmNvZGUoeyBoZWFkZXJzOiByYXdIZWFkZXJzLCBib2R5IH0pIHtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyTWFyc2hhbGxlci5mb3JtYXQocmF3SGVhZGVycyk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGhlYWRlcnMuYnl0ZUxlbmd0aCArIGJvZHkuYnl0ZUxlbmd0aCArIDE2O1xuICAgICAgICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpO1xuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KG91dC5idWZmZXIsIG91dC5ieXRlT2Zmc2V0LCBvdXQuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGNoZWNrc3VtID0gbmV3IGNyYzMyLkNyYzMyKCk7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKDAsIGxlbmd0aCwgZmFsc2UpO1xuICAgICAgICB2aWV3LnNldFVpbnQzMig0LCBoZWFkZXJzLmJ5dGVMZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoOCwgY2hlY2tzdW0udXBkYXRlKG91dC5zdWJhcnJheSgwLCA4KSkuZGlnZXN0KCksIGZhbHNlKTtcbiAgICAgICAgb3V0LnNldChoZWFkZXJzLCAxMik7XG4gICAgICAgIG91dC5zZXQoYm9keSwgaGVhZGVycy5ieXRlTGVuZ3RoICsgMTIpO1xuICAgICAgICB2aWV3LnNldFVpbnQzMihsZW5ndGggLSA0LCBjaGVja3N1bS51cGRhdGUob3V0LnN1YmFycmF5KDgsIGxlbmd0aCAtIDQpKS5kaWdlc3QoKSwgZmFsc2UpO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBkZWNvZGUobWVzc2FnZSkge1xuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIGJvZHkgfSA9IHNwbGl0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHsgaGVhZGVyczogdGhpcy5oZWFkZXJNYXJzaGFsbGVyLnBhcnNlKGhlYWRlcnMpLCBib2R5IH07XG4gICAgfVxuICAgIGZvcm1hdEhlYWRlcnMocmF3SGVhZGVycykge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFkZXJNYXJzaGFsbGVyLmZvcm1hdChyYXdIZWFkZXJzKTtcbiAgICB9XG59XG5cbmNsYXNzIE1lc3NhZ2VEZWNvZGVyU3RyZWFtIHtcbiAgICBvcHRpb25zO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNJdGVyYXRvcigpO1xuICAgIH1cbiAgICBhc3luYyAqYXN5bmNJdGVyYXRvcigpIHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBieXRlcyBvZiB0aGlzLm9wdGlvbnMuaW5wdXRTdHJlYW0pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLm9wdGlvbnMuZGVjb2Rlci5kZWNvZGUoYnl0ZXMpO1xuICAgICAgICAgICAgeWllbGQgZGVjb2RlZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY2xhc3MgTWVzc2FnZUVuY29kZXJTdHJlYW0ge1xuICAgIG9wdGlvbnM7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hc3luY0l0ZXJhdG9yKCk7XG4gICAgfVxuICAgIGFzeW5jICphc3luY0l0ZXJhdG9yKCkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG1zZyBvZiB0aGlzLm9wdGlvbnMubWVzc2FnZVN0cmVhbSkge1xuICAgICAgICAgICAgY29uc3QgZW5jb2RlZCA9IHRoaXMub3B0aW9ucy5lbmNvZGVyLmVuY29kZShtc2cpO1xuICAgICAgICAgICAgeWllbGQgZW5jb2RlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmluY2x1ZGVFbmRGcmFtZSkge1xuICAgICAgICAgICAgeWllbGQgbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNsYXNzIFNtaXRoeU1lc3NhZ2VEZWNvZGVyU3RyZWFtIHtcbiAgICBvcHRpb25zO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNJdGVyYXRvcigpO1xuICAgIH1cbiAgICBhc3luYyAqYXN5bmNJdGVyYXRvcigpIHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBtZXNzYWdlIG9mIHRoaXMub3B0aW9ucy5tZXNzYWdlU3RyZWFtKSB7XG4gICAgICAgICAgICBjb25zdCBkZXNlcmlhbGl6ZWQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZGVzZXJpYWxpemVyKG1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKGRlc2VyaWFsaXplZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgeWllbGQgZGVzZXJpYWxpemVkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBTbWl0aHlNZXNzYWdlRW5jb2RlclN0cmVhbSB7XG4gICAgb3B0aW9ucztcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzeW5jSXRlcmF0b3IoKTtcbiAgICB9XG4gICAgYXN5bmMgKmFzeW5jSXRlcmF0b3IoKSB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgdGhpcy5vcHRpb25zLmlucHV0U3RyZWFtKSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkQnVmID0gdGhpcy5vcHRpb25zLnNlcmlhbGl6ZXIoY2h1bmspO1xuICAgICAgICAgICAgeWllbGQgcGF5bG9hZEJ1ZjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0cy5FdmVudFN0cmVhbUNvZGVjID0gRXZlbnRTdHJlYW1Db2RlYztcbmV4cG9ydHMuSGVhZGVyTWFyc2hhbGxlciA9IEhlYWRlck1hcnNoYWxsZXI7XG5leHBvcnRzLkludDY0ID0gSW50NjQ7XG5leHBvcnRzLk1lc3NhZ2VEZWNvZGVyU3RyZWFtID0gTWVzc2FnZURlY29kZXJTdHJlYW07XG5leHBvcnRzLk1lc3NhZ2VFbmNvZGVyU3RyZWFtID0gTWVzc2FnZUVuY29kZXJTdHJlYW07XG5leHBvcnRzLlNtaXRoeU1lc3NhZ2VEZWNvZGVyU3RyZWFtID0gU21pdGh5TWVzc2FnZURlY29kZXJTdHJlYW07XG5leHBvcnRzLlNtaXRoeU1lc3NhZ2VFbmNvZGVyU3RyZWFtID0gU21pdGh5TWVzc2FnZUVuY29kZXJTdHJlYW07XG4iLAogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIGV2ZW50c3RyZWFtQ29kZWMgPSByZXF1aXJlKCdAc21pdGh5L2V2ZW50c3RyZWFtLWNvZGVjJyk7XG5cbmZ1bmN0aW9uIGdldENodW5rZWRTdHJlYW0oc291cmNlKSB7XG4gICAgbGV0IGN1cnJlbnRNZXNzYWdlVG90YWxMZW5ndGggPSAwO1xuICAgIGxldCBjdXJyZW50TWVzc2FnZVBlbmRpbmdMZW5ndGggPSAwO1xuICAgIGxldCBjdXJyZW50TWVzc2FnZSA9IG51bGw7XG4gICAgbGV0IG1lc3NhZ2VMZW5ndGhCdWZmZXIgPSBudWxsO1xuICAgIGNvbnN0IGFsbG9jYXRlTWVzc2FnZSA9IChzaXplKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2l6ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGFsbG9jYXRlIGFuIGV2ZW50IG1lc3NhZ2Ugd2hlcmUgc2l6ZSB3YXMgbm90IGEgbnVtYmVyOiBcIiArIHNpemUpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRNZXNzYWdlVG90YWxMZW5ndGggPSBzaXplO1xuICAgICAgICBjdXJyZW50TWVzc2FnZVBlbmRpbmdMZW5ndGggPSA0O1xuICAgICAgICBjdXJyZW50TWVzc2FnZSA9IG5ldyBVaW50OEFycmF5KHNpemUpO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVzc2FnZVZpZXcgPSBuZXcgRGF0YVZpZXcoY3VycmVudE1lc3NhZ2UuYnVmZmVyKTtcbiAgICAgICAgY3VycmVudE1lc3NhZ2VWaWV3LnNldFVpbnQzMigwLCBzaXplLCBmYWxzZSk7XG4gICAgfTtcbiAgICBjb25zdCBpdGVyYXRvciA9IGFzeW5jIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZUl0ZXJhdG9yID0gc291cmNlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgc291cmNlSXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRNZXNzYWdlVG90YWxMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50TWVzc2FnZVRvdGFsTGVuZ3RoID09PSBjdXJyZW50TWVzc2FnZVBlbmRpbmdMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgY3VycmVudE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcnVuY2F0ZWQgZXZlbnQgbWVzc2FnZSByZWNlaXZlZC5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNodW5rTGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRPZmZzZXQgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRPZmZzZXQgPCBjaHVua0xlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghY3VycmVudE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnl0ZXNSZW1haW5pbmcgPSBjaHVua0xlbmd0aCAtIGN1cnJlbnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWVzc2FnZUxlbmd0aEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxlbmd0aEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bUJ5dGVzRm9yVG90YWwgPSBNYXRoLm1pbig0IC0gY3VycmVudE1lc3NhZ2VQZW5kaW5nTGVuZ3RoLCBieXRlc1JlbWFpbmluZyk7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VMZW5ndGhCdWZmZXIuc2V0KHZhbHVlLnNsaWNlKGN1cnJlbnRPZmZzZXQsIGN1cnJlbnRPZmZzZXQgKyBudW1CeXRlc0ZvclRvdGFsKSwgY3VycmVudE1lc3NhZ2VQZW5kaW5nTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE1lc3NhZ2VQZW5kaW5nTGVuZ3RoICs9IG51bUJ5dGVzRm9yVG90YWw7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gbnVtQnl0ZXNGb3JUb3RhbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNZXNzYWdlUGVuZGluZ0xlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlTWVzc2FnZShuZXcgRGF0YVZpZXcobWVzc2FnZUxlbmd0aEJ1ZmZlci5idWZmZXIpLmdldFVpbnQzMigwLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlTGVuZ3RoQnVmZmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtQnl0ZXNUb1dyaXRlID0gTWF0aC5taW4oY3VycmVudE1lc3NhZ2VUb3RhbExlbmd0aCAtIGN1cnJlbnRNZXNzYWdlUGVuZGluZ0xlbmd0aCwgY2h1bmtMZW5ndGggLSBjdXJyZW50T2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TWVzc2FnZS5zZXQodmFsdWUuc2xpY2UoY3VycmVudE9mZnNldCwgY3VycmVudE9mZnNldCArIG51bUJ5dGVzVG9Xcml0ZSksIGN1cnJlbnRNZXNzYWdlUGVuZGluZ0xlbmd0aCk7XG4gICAgICAgICAgICAgICAgY3VycmVudE1lc3NhZ2VQZW5kaW5nTGVuZ3RoICs9IG51bUJ5dGVzVG9Xcml0ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IG51bUJ5dGVzVG9Xcml0ZTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudE1lc3NhZ2VUb3RhbExlbmd0aCAmJiBjdXJyZW50TWVzc2FnZVRvdGFsTGVuZ3RoID09PSBjdXJyZW50TWVzc2FnZVBlbmRpbmdMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgY3VycmVudE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNZXNzYWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE1lc3NhZ2VUb3RhbExlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNZXNzYWdlUGVuZGluZ0xlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdOiBpdGVyYXRvcixcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRNZXNzYWdlVW5tYXJzaGFsbGVyKGRlc2VyaWFsaXplciwgdG9VdGY4KSB7XG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWU6IG1lc3NhZ2VUeXBlIH0gPSBtZXNzYWdlLmhlYWRlcnNbXCI6bWVzc2FnZS10eXBlXCJdO1xuICAgICAgICBpZiAobWVzc2FnZVR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICAgICAgY29uc3QgdW5tb2RlbGVkRXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZS5oZWFkZXJzW1wiOmVycm9yLW1lc3NhZ2VcIl0udmFsdWUgfHwgXCJVbmtub3duRXJyb3JcIik7XG4gICAgICAgICAgICB1bm1vZGVsZWRFcnJvci5uYW1lID0gbWVzc2FnZS5oZWFkZXJzW1wiOmVycm9yLWNvZGVcIl0udmFsdWU7XG4gICAgICAgICAgICB0aHJvdyB1bm1vZGVsZWRFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlVHlwZSA9PT0gXCJleGNlcHRpb25cIikge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IG1lc3NhZ2UuaGVhZGVyc1tcIjpleGNlcHRpb24tdHlwZVwiXS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGV4Y2VwdGlvbiA9IHsgW2NvZGVdOiBtZXNzYWdlIH07XG4gICAgICAgICAgICBjb25zdCBkZXNlcmlhbGl6ZWRFeGNlcHRpb24gPSBhd2FpdCBkZXNlcmlhbGl6ZXIoZXhjZXB0aW9uKTtcbiAgICAgICAgICAgIGlmIChkZXNlcmlhbGl6ZWRFeGNlcHRpb24uJHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcih0b1V0ZjgobWVzc2FnZS5ib2R5KSk7XG4gICAgICAgICAgICAgICAgZXJyb3IubmFtZSA9IGNvZGU7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBkZXNlcmlhbGl6ZWRFeGNlcHRpb25bY29kZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZVR5cGUgPT09IFwiZXZlbnRcIikge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgW21lc3NhZ2UuaGVhZGVyc1tcIjpldmVudC10eXBlXCJdLnZhbHVlXTogbWVzc2FnZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBkZXNlcmlhbGl6ZWQgPSBhd2FpdCBkZXNlcmlhbGl6ZXIoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGRlc2VyaWFsaXplZC4kdW5rbm93bilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXphYmxlIGV2ZW50IHR5cGU6ICR7bWVzc2FnZS5oZWFkZXJzW1wiOmV2ZW50LXR5cGVcIl0udmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5jbGFzcyBFdmVudFN0cmVhbU1hcnNoYWxsZXIge1xuICAgIGV2ZW50U3RyZWFtQ29kZWM7XG4gICAgdXRmRW5jb2RlcjtcbiAgICBjb25zdHJ1Y3Rvcih7IHV0ZjhFbmNvZGVyLCB1dGY4RGVjb2RlciB9KSB7XG4gICAgICAgIHRoaXMuZXZlbnRTdHJlYW1Db2RlYyA9IG5ldyBldmVudHN0cmVhbUNvZGVjLkV2ZW50U3RyZWFtQ29kZWModXRmOEVuY29kZXIsIHV0ZjhEZWNvZGVyKTtcbiAgICAgICAgdGhpcy51dGZFbmNvZGVyID0gdXRmOEVuY29kZXI7XG4gICAgfVxuICAgIGRlc2VyaWFsaXplKGJvZHksIGRlc2VyaWFsaXplcikge1xuICAgICAgICBjb25zdCBpbnB1dFN0cmVhbSA9IGdldENodW5rZWRTdHJlYW0oYm9keSk7XG4gICAgICAgIHJldHVybiBuZXcgZXZlbnRzdHJlYW1Db2RlYy5TbWl0aHlNZXNzYWdlRGVjb2RlclN0cmVhbSh7XG4gICAgICAgICAgICBtZXNzYWdlU3RyZWFtOiBuZXcgZXZlbnRzdHJlYW1Db2RlYy5NZXNzYWdlRGVjb2RlclN0cmVhbSh7IGlucHV0U3RyZWFtLCBkZWNvZGVyOiB0aGlzLmV2ZW50U3RyZWFtQ29kZWMgfSksXG4gICAgICAgICAgICBkZXNlcmlhbGl6ZXI6IGdldE1lc3NhZ2VVbm1hcnNoYWxsZXIoZGVzZXJpYWxpemVyLCB0aGlzLnV0ZkVuY29kZXIpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2VyaWFsaXplKGlucHV0U3RyZWFtLCBzZXJpYWxpemVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgZXZlbnRzdHJlYW1Db2RlYy5NZXNzYWdlRW5jb2RlclN0cmVhbSh7XG4gICAgICAgICAgICBtZXNzYWdlU3RyZWFtOiBuZXcgZXZlbnRzdHJlYW1Db2RlYy5TbWl0aHlNZXNzYWdlRW5jb2RlclN0cmVhbSh7IGlucHV0U3RyZWFtLCBzZXJpYWxpemVyIH0pLFxuICAgICAgICAgICAgZW5jb2RlcjogdGhpcy5ldmVudFN0cmVhbUNvZGVjLFxuICAgICAgICAgICAgaW5jbHVkZUVuZEZyYW1lOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmNvbnN0IGV2ZW50U3RyZWFtU2VyZGVQcm92aWRlciA9IChvcHRpb25zKSA9PiBuZXcgRXZlbnRTdHJlYW1NYXJzaGFsbGVyKG9wdGlvbnMpO1xuXG5leHBvcnRzLkV2ZW50U3RyZWFtTWFyc2hhbGxlciA9IEV2ZW50U3RyZWFtTWFyc2hhbGxlcjtcbmV4cG9ydHMuZXZlbnRTdHJlYW1TZXJkZVByb3ZpZGVyID0gZXZlbnRTdHJlYW1TZXJkZVByb3ZpZGVyO1xuIiwKICAgICIndXNlIHN0cmljdCc7XG5cbnZhciBldmVudHN0cmVhbVNlcmRlVW5pdmVyc2FsID0gcmVxdWlyZSgnQHNtaXRoeS9ldmVudHN0cmVhbS1zZXJkZS11bml2ZXJzYWwnKTtcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKTtcblxuYXN5bmMgZnVuY3Rpb24qIHJlYWRhYmxldG9JdGVyYWJsZShyZWFkU3RyZWFtKSB7XG4gICAgbGV0IHN0cmVhbUVuZGVkID0gZmFsc2U7XG4gICAgbGV0IGdlbmVyYXRpb25FbmRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlY29yZHMgPSBuZXcgQXJyYXkoKTtcbiAgICByZWFkU3RyZWFtLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgICBpZiAoIXN0cmVhbUVuZGVkKSB7XG4gICAgICAgICAgICBzdHJlYW1FbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmVhZFN0cmVhbS5vbihcImRhdGFcIiwgKGRhdGEpID0+IHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKGRhdGEpO1xuICAgIH0pO1xuICAgIHJlYWRTdHJlYW0ub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICBzdHJlYW1FbmRlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgd2hpbGUgKCFnZW5lcmF0aW9uRW5kZWQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHJlY29yZHMuc2hpZnQoKSksIDApKTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBnZW5lcmF0aW9uRW5kZWQgPSBzdHJlYW1FbmRlZCAmJiByZWNvcmRzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG59XG5cbmNsYXNzIEV2ZW50U3RyZWFtTWFyc2hhbGxlciB7XG4gICAgdW5pdmVyc2FsTWFyc2hhbGxlcjtcbiAgICBjb25zdHJ1Y3Rvcih7IHV0ZjhFbmNvZGVyLCB1dGY4RGVjb2RlciB9KSB7XG4gICAgICAgIHRoaXMudW5pdmVyc2FsTWFyc2hhbGxlciA9IG5ldyBldmVudHN0cmVhbVNlcmRlVW5pdmVyc2FsLkV2ZW50U3RyZWFtTWFyc2hhbGxlcih7XG4gICAgICAgICAgICB1dGY4RGVjb2RlcixcbiAgICAgICAgICAgIHV0ZjhFbmNvZGVyLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVzZXJpYWxpemUoYm9keSwgZGVzZXJpYWxpemVyKSB7XG4gICAgICAgIGNvbnN0IGJvZHlJdGVyYWJsZSA9IHR5cGVvZiBib2R5W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiID8gYm9keSA6IHJlYWRhYmxldG9JdGVyYWJsZShib2R5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pdmVyc2FsTWFyc2hhbGxlci5kZXNlcmlhbGl6ZShib2R5SXRlcmFibGUsIGRlc2VyaWFsaXplcik7XG4gICAgfVxuICAgIHNlcmlhbGl6ZShpbnB1dCwgc2VyaWFsaXplcikge1xuICAgICAgICByZXR1cm4gc3RyZWFtLlJlYWRhYmxlLmZyb20odGhpcy51bml2ZXJzYWxNYXJzaGFsbGVyLnNlcmlhbGl6ZShpbnB1dCwgc2VyaWFsaXplcikpO1xuICAgIH1cbn1cblxuY29uc3QgZXZlbnRTdHJlYW1TZXJkZVByb3ZpZGVyID0gKG9wdGlvbnMpID0+IG5ldyBFdmVudFN0cmVhbU1hcnNoYWxsZXIob3B0aW9ucyk7XG5cbmV4cG9ydHMuRXZlbnRTdHJlYW1NYXJzaGFsbGVyID0gRXZlbnRTdHJlYW1NYXJzaGFsbGVyO1xuZXhwb3J0cy5ldmVudFN0cmVhbVNlcmRlUHJvdmlkZXIgPSBldmVudFN0cmVhbVNlcmRlUHJvdmlkZXI7XG4iLAogICAgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5ydWxlU2V0ID0gdm9pZCAwO1xuY29uc3QgcyA9IFwicmVxdWlyZWRcIiwgdCA9IFwiZm5cIiwgdSA9IFwiYXJndlwiLCB2ID0gXCJyZWZcIjtcbmNvbnN0IGEgPSB0cnVlLCBiID0gXCJpc1NldFwiLCBjID0gXCJib29sZWFuRXF1YWxzXCIsIGQgPSBcImVycm9yXCIsIGUgPSBcImVuZHBvaW50XCIsIGYgPSBcInRyZWVcIiwgZyA9IFwiUGFydGl0aW9uUmVzdWx0XCIsIGggPSB7IFtzXTogZmFsc2UsIFwidHlwZVwiOiBcInN0cmluZ1wiIH0sIGkgPSB7IFtzXTogdHJ1ZSwgXCJkZWZhdWx0XCI6IGZhbHNlLCBcInR5cGVcIjogXCJib29sZWFuXCIgfSwgaiA9IHsgW3ZdOiBcIkVuZHBvaW50XCIgfSwgayA9IHsgW3RdOiBjLCBbdV06IFt7IFt2XTogXCJVc2VGSVBTXCIgfSwgdHJ1ZV0gfSwgbCA9IHsgW3RdOiBjLCBbdV06IFt7IFt2XTogXCJVc2VEdWFsU3RhY2tcIiB9LCB0cnVlXSB9LCBtID0ge30sIG4gPSB7IFt0XTogXCJnZXRBdHRyXCIsIFt1XTogW3sgW3ZdOiBnIH0sIFwic3VwcG9ydHNGSVBTXCJdIH0sIG8gPSB7IFt0XTogYywgW3VdOiBbdHJ1ZSwgeyBbdF06IFwiZ2V0QXR0clwiLCBbdV06IFt7IFt2XTogZyB9LCBcInN1cHBvcnRzRHVhbFN0YWNrXCJdIH1dIH0sIHAgPSBba10sIHEgPSBbbF0sIHIgPSBbeyBbdl06IFwiUmVnaW9uXCIgfV07XG5jb25zdCBfZGF0YSA9IHsgdmVyc2lvbjogXCIxLjBcIiwgcGFyYW1ldGVyczogeyBSZWdpb246IGgsIFVzZUR1YWxTdGFjazogaSwgVXNlRklQUzogaSwgRW5kcG9pbnQ6IGggfSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFt7IFt0XTogYiwgW3VdOiBbal0gfV0sIHJ1bGVzOiBbeyBjb25kaXRpb25zOiBwLCBlcnJvcjogXCJJbnZhbGlkIENvbmZpZ3VyYXRpb246IEZJUFMgYW5kIGN1c3RvbSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZFwiLCB0eXBlOiBkIH0sIHsgY29uZGl0aW9uczogcSwgZXJyb3I6IFwiSW52YWxpZCBDb25maWd1cmF0aW9uOiBEdWFsc3RhY2sgYW5kIGN1c3RvbSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZFwiLCB0eXBlOiBkIH0sIHsgZW5kcG9pbnQ6IHsgdXJsOiBqLCBwcm9wZXJ0aWVzOiBtLCBoZWFkZXJzOiBtIH0sIHR5cGU6IGUgfV0sIHR5cGU6IGYgfSwgeyBjb25kaXRpb25zOiBbeyBbdF06IGIsIFt1XTogciB9XSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFt7IFt0XTogXCJhd3MucGFydGl0aW9uXCIsIFt1XTogciwgYXNzaWduOiBnIH1dLCBydWxlczogW3sgY29uZGl0aW9uczogW2ssIGxdLCBydWxlczogW3sgY29uZGl0aW9uczogW3sgW3RdOiBjLCBbdV06IFthLCBuXSB9LCBvXSwgcnVsZXM6IFt7IGVuZHBvaW50OiB7IHVybDogXCJodHRwczovL2xhbWJkYS1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fVwiLCBwcm9wZXJ0aWVzOiBtLCBoZWFkZXJzOiBtIH0sIHR5cGU6IGUgfV0sIHR5cGU6IGYgfSwgeyBlcnJvcjogXCJGSVBTIGFuZCBEdWFsU3RhY2sgYXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9uZSBvciBib3RoXCIsIHR5cGU6IGQgfV0sIHR5cGU6IGYgfSwgeyBjb25kaXRpb25zOiBwLCBydWxlczogW3sgY29uZGl0aW9uczogW3sgW3RdOiBjLCBbdV06IFtuLCBhXSB9XSwgcnVsZXM6IFt7IGVuZHBvaW50OiB7IHVybDogXCJodHRwczovL2xhbWJkYS1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fVwiLCBwcm9wZXJ0aWVzOiBtLCBoZWFkZXJzOiBtIH0sIHR5cGU6IGUgfV0sIHR5cGU6IGYgfSwgeyBlcnJvcjogXCJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRklQU1wiLCB0eXBlOiBkIH1dLCB0eXBlOiBmIH0sIHsgY29uZGl0aW9uczogcSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFtvXSwgcnVsZXM6IFt7IGVuZHBvaW50OiB7IHVybDogXCJodHRwczovL2xhbWJkYS57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH1cIiwgcHJvcGVydGllczogbSwgaGVhZGVyczogbSB9LCB0eXBlOiBlIH1dLCB0eXBlOiBmIH0sIHsgZXJyb3I6IFwiRHVhbFN0YWNrIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRHVhbFN0YWNrXCIsIHR5cGU6IGQgfV0sIHR5cGU6IGYgfSwgeyBlbmRwb2ludDogeyB1cmw6IFwiaHR0cHM6Ly9sYW1iZGEue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9XCIsIHByb3BlcnRpZXM6IG0sIGhlYWRlcnM6IG0gfSwgdHlwZTogZSB9XSwgdHlwZTogZiB9XSwgdHlwZTogZiB9LCB7IGVycm9yOiBcIkludmFsaWQgQ29uZmlndXJhdGlvbjogTWlzc2luZyBSZWdpb25cIiwgdHlwZTogZCB9XSB9O1xuZXhwb3J0cy5ydWxlU2V0ID0gX2RhdGE7XG4iLAogICAgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0RW5kcG9pbnRSZXNvbHZlciA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfZW5kcG9pbnRzXzEgPSByZXF1aXJlKFwiQGF3cy1zZGsvdXRpbC1lbmRwb2ludHNcIik7XG5jb25zdCB1dGlsX2VuZHBvaW50c18yID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1lbmRwb2ludHNcIik7XG5jb25zdCBydWxlc2V0XzEgPSByZXF1aXJlKFwiLi9ydWxlc2V0XCIpO1xuY29uc3QgY2FjaGUgPSBuZXcgdXRpbF9lbmRwb2ludHNfMi5FbmRwb2ludENhY2hlKHtcbiAgICBzaXplOiA1MCxcbiAgICBwYXJhbXM6IFtcIkVuZHBvaW50XCIsIFwiUmVnaW9uXCIsIFwiVXNlRHVhbFN0YWNrXCIsIFwiVXNlRklQU1wiXSxcbn0pO1xuY29uc3QgZGVmYXVsdEVuZHBvaW50UmVzb2x2ZXIgPSAoZW5kcG9pbnRQYXJhbXMsIGNvbnRleHQgPSB7fSkgPT4ge1xuICAgIHJldHVybiBjYWNoZS5nZXQoZW5kcG9pbnRQYXJhbXMsICgpID0+ICgwLCB1dGlsX2VuZHBvaW50c18yLnJlc29sdmVFbmRwb2ludCkocnVsZXNldF8xLnJ1bGVTZXQsIHtcbiAgICAgICAgZW5kcG9pbnRQYXJhbXM6IGVuZHBvaW50UGFyYW1zLFxuICAgICAgICBsb2dnZXI6IGNvbnRleHQubG9nZ2VyLFxuICAgIH0pKTtcbn07XG5leHBvcnRzLmRlZmF1bHRFbmRwb2ludFJlc29sdmVyID0gZGVmYXVsdEVuZHBvaW50UmVzb2x2ZXI7XG51dGlsX2VuZHBvaW50c18yLmN1c3RvbUVuZHBvaW50RnVuY3Rpb25zLmF3cyA9IHV0aWxfZW5kcG9pbnRzXzEuYXdzRW5kcG9pbnRGdW5jdGlvbnM7XG4iLAogICAgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRSdW50aW1lQ29uZmlnID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIkBhd3Mtc2RrL2NvcmVcIik7XG5jb25zdCBwcm90b2NvbHNfMSA9IHJlcXVpcmUoXCJAYXdzLXNkay9jb3JlL3Byb3RvY29sc1wiKTtcbmNvbnN0IHNtaXRoeV9jbGllbnRfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3NtaXRoeS1jbGllbnRcIik7XG5jb25zdCB1cmxfcGFyc2VyXzEgPSByZXF1aXJlKFwiQHNtaXRoeS91cmwtcGFyc2VyXCIpO1xuY29uc3QgdXRpbF9iYXNlNjRfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3V0aWwtYmFzZTY0XCIpO1xuY29uc3QgdXRpbF91dGY4XzEgPSByZXF1aXJlKFwiQHNtaXRoeS91dGlsLXV0ZjhcIik7XG5jb25zdCBodHRwQXV0aFNjaGVtZVByb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9hdXRoL2h0dHBBdXRoU2NoZW1lUHJvdmlkZXJcIik7XG5jb25zdCBlbmRwb2ludFJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9lbmRwb2ludC9lbmRwb2ludFJlc29sdmVyXCIpO1xuY29uc3QgZ2V0UnVudGltZUNvbmZpZyA9IChjb25maWcpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMTUtMDMtMzFcIixcbiAgICAgICAgYmFzZTY0RGVjb2RlcjogY29uZmlnPy5iYXNlNjREZWNvZGVyID8/IHV0aWxfYmFzZTY0XzEuZnJvbUJhc2U2NCxcbiAgICAgICAgYmFzZTY0RW5jb2RlcjogY29uZmlnPy5iYXNlNjRFbmNvZGVyID8/IHV0aWxfYmFzZTY0XzEudG9CYXNlNjQsXG4gICAgICAgIGRpc2FibGVIb3N0UHJlZml4OiBjb25maWc/LmRpc2FibGVIb3N0UHJlZml4ID8/IGZhbHNlLFxuICAgICAgICBlbmRwb2ludFByb3ZpZGVyOiBjb25maWc/LmVuZHBvaW50UHJvdmlkZXIgPz8gZW5kcG9pbnRSZXNvbHZlcl8xLmRlZmF1bHRFbmRwb2ludFJlc29sdmVyLFxuICAgICAgICBleHRlbnNpb25zOiBjb25maWc/LmV4dGVuc2lvbnMgPz8gW10sXG4gICAgICAgIGh0dHBBdXRoU2NoZW1lUHJvdmlkZXI6IGNvbmZpZz8uaHR0cEF1dGhTY2hlbWVQcm92aWRlciA/PyBodHRwQXV0aFNjaGVtZVByb3ZpZGVyXzEuZGVmYXVsdExhbWJkYUh0dHBBdXRoU2NoZW1lUHJvdmlkZXIsXG4gICAgICAgIGh0dHBBdXRoU2NoZW1lczogY29uZmlnPy5odHRwQXV0aFNjaGVtZXMgPz8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNjaGVtZUlkOiBcImF3cy5hdXRoI3NpZ3Y0XCIsXG4gICAgICAgICAgICAgICAgaWRlbnRpdHlQcm92aWRlcjogKGlwYykgPT4gaXBjLmdldElkZW50aXR5UHJvdmlkZXIoXCJhd3MuYXV0aCNzaWd2NFwiKSxcbiAgICAgICAgICAgICAgICBzaWduZXI6IG5ldyBjb3JlXzEuQXdzU2RrU2lnVjRTaWduZXIoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxvZ2dlcjogY29uZmlnPy5sb2dnZXIgPz8gbmV3IHNtaXRoeV9jbGllbnRfMS5Ob09wTG9nZ2VyKCksXG4gICAgICAgIHByb3RvY29sOiBjb25maWc/LnByb3RvY29sID8/IG5ldyBwcm90b2NvbHNfMS5Bd3NSZXN0SnNvblByb3RvY29sKHsgZGVmYXVsdE5hbWVzcGFjZTogXCJjb20uYW1hem9uYXdzLmxhbWJkYVwiIH0pLFxuICAgICAgICBzZXJ2aWNlSWQ6IGNvbmZpZz8uc2VydmljZUlkID8/IFwiTGFtYmRhXCIsXG4gICAgICAgIHVybFBhcnNlcjogY29uZmlnPy51cmxQYXJzZXIgPz8gdXJsX3BhcnNlcl8xLnBhcnNlVXJsLFxuICAgICAgICB1dGY4RGVjb2RlcjogY29uZmlnPy51dGY4RGVjb2RlciA/PyB1dGlsX3V0ZjhfMS5mcm9tVXRmOCxcbiAgICAgICAgdXRmOEVuY29kZXI6IGNvbmZpZz8udXRmOEVuY29kZXIgPz8gdXRpbF91dGY4XzEudG9VdGY4LFxuICAgIH07XG59O1xuZXhwb3J0cy5nZXRSdW50aW1lQ29uZmlnID0gZ2V0UnVudGltZUNvbmZpZztcbiIsCiAgICAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldFJ1bnRpbWVDb25maWcgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgcGFja2FnZV9qc29uXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vcGFja2FnZS5qc29uXCIpKTtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCJAYXdzLXNkay9jb3JlXCIpO1xuY29uc3QgY3JlZGVudGlhbF9wcm92aWRlcl9ub2RlXzEgPSByZXF1aXJlKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1ub2RlXCIpO1xuY29uc3QgdXRpbF91c2VyX2FnZW50X25vZGVfMSA9IHJlcXVpcmUoXCJAYXdzLXNkay91dGlsLXVzZXItYWdlbnQtbm9kZVwiKTtcbmNvbnN0IGNvbmZpZ19yZXNvbHZlcl8xID0gcmVxdWlyZShcIkBzbWl0aHkvY29uZmlnLXJlc29sdmVyXCIpO1xuY29uc3QgZXZlbnRzdHJlYW1fc2VyZGVfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvZXZlbnRzdHJlYW0tc2VyZGUtbm9kZVwiKTtcbmNvbnN0IGhhc2hfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvaGFzaC1ub2RlXCIpO1xuY29uc3QgbWlkZGxld2FyZV9yZXRyeV8xID0gcmVxdWlyZShcIkBzbWl0aHkvbWlkZGxld2FyZS1yZXRyeVwiKTtcbmNvbnN0IG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEgPSByZXF1aXJlKFwiQHNtaXRoeS9ub2RlLWNvbmZpZy1wcm92aWRlclwiKTtcbmNvbnN0IG5vZGVfaHR0cF9oYW5kbGVyXzEgPSByZXF1aXJlKFwiQHNtaXRoeS9ub2RlLWh0dHAtaGFuZGxlclwiKTtcbmNvbnN0IHV0aWxfYm9keV9sZW5ndGhfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1ib2R5LWxlbmd0aC1ub2RlXCIpO1xuY29uc3QgdXRpbF9yZXRyeV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1yZXRyeVwiKTtcbmNvbnN0IHJ1bnRpbWVDb25maWdfc2hhcmVkXzEgPSByZXF1aXJlKFwiLi9ydW50aW1lQ29uZmlnLnNoYXJlZFwiKTtcbmNvbnN0IHNtaXRoeV9jbGllbnRfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3NtaXRoeS1jbGllbnRcIik7XG5jb25zdCB1dGlsX2RlZmF1bHRzX21vZGVfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1kZWZhdWx0cy1tb2RlLW5vZGVcIik7XG5jb25zdCBzbWl0aHlfY2xpZW50XzIgPSByZXF1aXJlKFwiQHNtaXRoeS9zbWl0aHktY2xpZW50XCIpO1xuY29uc3QgZ2V0UnVudGltZUNvbmZpZyA9IChjb25maWcpID0+IHtcbiAgICAoMCwgc21pdGh5X2NsaWVudF8yLmVtaXRXYXJuaW5nSWZVbnN1cHBvcnRlZFZlcnNpb24pKHByb2Nlc3MudmVyc2lvbik7XG4gICAgY29uc3QgZGVmYXVsdHNNb2RlID0gKDAsIHV0aWxfZGVmYXVsdHNfbW9kZV9ub2RlXzEucmVzb2x2ZURlZmF1bHRzTW9kZUNvbmZpZykoY29uZmlnKTtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnUHJvdmlkZXIgPSAoKSA9PiBkZWZhdWx0c01vZGUoKS50aGVuKHNtaXRoeV9jbGllbnRfMS5sb2FkQ29uZmlnc0ZvckRlZmF1bHRNb2RlKTtcbiAgICBjb25zdCBjbGllbnRTaGFyZWRWYWx1ZXMgPSAoMCwgcnVudGltZUNvbmZpZ19zaGFyZWRfMS5nZXRSdW50aW1lQ29uZmlnKShjb25maWcpO1xuICAgICgwLCBjb3JlXzEuZW1pdFdhcm5pbmdJZlVuc3VwcG9ydGVkVmVyc2lvbikocHJvY2Vzcy52ZXJzaW9uKTtcbiAgICBjb25zdCBsb2FkZXJDb25maWcgPSB7XG4gICAgICAgIHByb2ZpbGU6IGNvbmZpZz8ucHJvZmlsZSxcbiAgICAgICAgbG9nZ2VyOiBjbGllbnRTaGFyZWRWYWx1ZXMubG9nZ2VyLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2xpZW50U2hhcmVkVmFsdWVzLFxuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHJ1bnRpbWU6IFwibm9kZVwiLFxuICAgICAgICBkZWZhdWx0c01vZGUsXG4gICAgICAgIGF1dGhTY2hlbWVQcmVmZXJlbmNlOiBjb25maWc/LmF1dGhTY2hlbWVQcmVmZXJlbmNlID8/ICgwLCBub2RlX2NvbmZpZ19wcm92aWRlcl8xLmxvYWRDb25maWcpKGNvcmVfMS5OT0RFX0FVVEhfU0NIRU1FX1BSRUZFUkVOQ0VfT1BUSU9OUywgbG9hZGVyQ29uZmlnKSxcbiAgICAgICAgYm9keUxlbmd0aENoZWNrZXI6IGNvbmZpZz8uYm9keUxlbmd0aENoZWNrZXIgPz8gdXRpbF9ib2R5X2xlbmd0aF9ub2RlXzEuY2FsY3VsYXRlQm9keUxlbmd0aCxcbiAgICAgICAgY3JlZGVudGlhbERlZmF1bHRQcm92aWRlcjogY29uZmlnPy5jcmVkZW50aWFsRGVmYXVsdFByb3ZpZGVyID8/IGNyZWRlbnRpYWxfcHJvdmlkZXJfbm9kZV8xLmRlZmF1bHRQcm92aWRlcixcbiAgICAgICAgZGVmYXVsdFVzZXJBZ2VudFByb3ZpZGVyOiBjb25maWc/LmRlZmF1bHRVc2VyQWdlbnRQcm92aWRlciA/P1xuICAgICAgICAgICAgKDAsIHV0aWxfdXNlcl9hZ2VudF9ub2RlXzEuY3JlYXRlRGVmYXVsdFVzZXJBZ2VudFByb3ZpZGVyKSh7IHNlcnZpY2VJZDogY2xpZW50U2hhcmVkVmFsdWVzLnNlcnZpY2VJZCwgY2xpZW50VmVyc2lvbjogcGFja2FnZV9qc29uXzEuZGVmYXVsdC52ZXJzaW9uIH0pLFxuICAgICAgICBldmVudFN0cmVhbVNlcmRlUHJvdmlkZXI6IGNvbmZpZz8uZXZlbnRTdHJlYW1TZXJkZVByb3ZpZGVyID8/IGV2ZW50c3RyZWFtX3NlcmRlX25vZGVfMS5ldmVudFN0cmVhbVNlcmRlUHJvdmlkZXIsXG4gICAgICAgIG1heEF0dGVtcHRzOiBjb25maWc/Lm1heEF0dGVtcHRzID8/ICgwLCBub2RlX2NvbmZpZ19wcm92aWRlcl8xLmxvYWRDb25maWcpKG1pZGRsZXdhcmVfcmV0cnlfMS5OT0RFX01BWF9BVFRFTVBUX0NPTkZJR19PUFRJT05TLCBjb25maWcpLFxuICAgICAgICByZWdpb246IGNvbmZpZz8ucmVnaW9uID8/XG4gICAgICAgICAgICAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKShjb25maWdfcmVzb2x2ZXJfMS5OT0RFX1JFR0lPTl9DT05GSUdfT1BUSU9OUywgeyAuLi5jb25maWdfcmVzb2x2ZXJfMS5OT0RFX1JFR0lPTl9DT05GSUdfRklMRV9PUFRJT05TLCAuLi5sb2FkZXJDb25maWcgfSksXG4gICAgICAgIHJlcXVlc3RIYW5kbGVyOiBub2RlX2h0dHBfaGFuZGxlcl8xLk5vZGVIdHRwSGFuZGxlci5jcmVhdGUoY29uZmlnPy5yZXF1ZXN0SGFuZGxlciA/PyBkZWZhdWx0Q29uZmlnUHJvdmlkZXIpLFxuICAgICAgICByZXRyeU1vZGU6IGNvbmZpZz8ucmV0cnlNb2RlID8/XG4gICAgICAgICAgICAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKSh7XG4gICAgICAgICAgICAgICAgLi4ubWlkZGxld2FyZV9yZXRyeV8xLk5PREVfUkVUUllfTU9ERV9DT05GSUdfT1BUSU9OUyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhc3luYyAoKSA9PiAoYXdhaXQgZGVmYXVsdENvbmZpZ1Byb3ZpZGVyKCkpLnJldHJ5TW9kZSB8fCB1dGlsX3JldHJ5XzEuREVGQVVMVF9SRVRSWV9NT0RFLFxuICAgICAgICAgICAgfSwgY29uZmlnKSxcbiAgICAgICAgc2hhMjU2OiBjb25maWc/LnNoYTI1NiA/PyBoYXNoX25vZGVfMS5IYXNoLmJpbmQobnVsbCwgXCJzaGEyNTZcIiksXG4gICAgICAgIHN0cmVhbUNvbGxlY3RvcjogY29uZmlnPy5zdHJlYW1Db2xsZWN0b3IgPz8gbm9kZV9odHRwX2hhbmRsZXJfMS5zdHJlYW1Db2xsZWN0b3IsXG4gICAgICAgIHVzZUR1YWxzdGFja0VuZHBvaW50OiBjb25maWc/LnVzZUR1YWxzdGFja0VuZHBvaW50ID8/ICgwLCBub2RlX2NvbmZpZ19wcm92aWRlcl8xLmxvYWRDb25maWcpKGNvbmZpZ19yZXNvbHZlcl8xLk5PREVfVVNFX0RVQUxTVEFDS19FTkRQT0lOVF9DT05GSUdfT1BUSU9OUywgbG9hZGVyQ29uZmlnKSxcbiAgICAgICAgdXNlRmlwc0VuZHBvaW50OiBjb25maWc/LnVzZUZpcHNFbmRwb2ludCA/PyAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKShjb25maWdfcmVzb2x2ZXJfMS5OT0RFX1VTRV9GSVBTX0VORFBPSU5UX0NPTkZJR19PUFRJT05TLCBsb2FkZXJDb25maWcpLFxuICAgICAgICB1c2VyQWdlbnRBcHBJZDogY29uZmlnPy51c2VyQWdlbnRBcHBJZCA/PyAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKSh1dGlsX3VzZXJfYWdlbnRfbm9kZV8xLk5PREVfQVBQX0lEX0NPTkZJR19PUFRJT05TLCBsb2FkZXJDb25maWcpLFxuICAgIH07XG59O1xuZXhwb3J0cy5nZXRSdW50aW1lQ29uZmlnID0gZ2V0UnVudGltZUNvbmZpZztcbiIsCiAgICAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBnZXRDaXJjdWxhclJlcGxhY2VyID0gKCkgPT4ge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xuICAgIHJldHVybiAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW0NpcmN1bGFyXVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufTtcblxuY29uc3Qgc2xlZXAgPSAoc2Vjb25kcykgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMTAwMCkpO1xufTtcblxuY29uc3Qgd2FpdGVyU2VydmljZURlZmF1bHRzID0ge1xuICAgIG1pbkRlbGF5OiAyLFxuICAgIG1heERlbGF5OiAxMjAsXG59O1xuZXhwb3J0cy5XYWl0ZXJTdGF0ZSA9IHZvaWQgMDtcbihmdW5jdGlvbiAoV2FpdGVyU3RhdGUpIHtcbiAgICBXYWl0ZXJTdGF0ZVtcIkFCT1JURURcIl0gPSBcIkFCT1JURURcIjtcbiAgICBXYWl0ZXJTdGF0ZVtcIkZBSUxVUkVcIl0gPSBcIkZBSUxVUkVcIjtcbiAgICBXYWl0ZXJTdGF0ZVtcIlNVQ0NFU1NcIl0gPSBcIlNVQ0NFU1NcIjtcbiAgICBXYWl0ZXJTdGF0ZVtcIlJFVFJZXCJdID0gXCJSRVRSWVwiO1xuICAgIFdhaXRlclN0YXRlW1wiVElNRU9VVFwiXSA9IFwiVElNRU9VVFwiO1xufSkoZXhwb3J0cy5XYWl0ZXJTdGF0ZSB8fCAoZXhwb3J0cy5XYWl0ZXJTdGF0ZSA9IHt9KSk7XG5jb25zdCBjaGVja0V4Y2VwdGlvbnMgPSAocmVzdWx0KSA9PiB7XG4gICAgaWYgKHJlc3VsdC5zdGF0ZSA9PT0gZXhwb3J0cy5XYWl0ZXJTdGF0ZS5BQk9SVEVEKSB7XG4gICAgICAgIGNvbnN0IGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoYCR7SlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgcmVhc29uOiBcIlJlcXVlc3Qgd2FzIGFib3J0ZWRcIixcbiAgICAgICAgfSwgZ2V0Q2lyY3VsYXJSZXBsYWNlcigpKX1gKTtcbiAgICAgICAgYWJvcnRFcnJvci5uYW1lID0gXCJBYm9ydEVycm9yXCI7XG4gICAgICAgIHRocm93IGFib3J0RXJyb3I7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlc3VsdC5zdGF0ZSA9PT0gZXhwb3J0cy5XYWl0ZXJTdGF0ZS5USU1FT1VUKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRFcnJvciA9IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICByZWFzb246IFwiV2FpdGVyIGhhcyB0aW1lZCBvdXRcIixcbiAgICAgICAgfSwgZ2V0Q2lyY3VsYXJSZXBsYWNlcigpKX1gKTtcbiAgICAgICAgdGltZW91dEVycm9yLm5hbWUgPSBcIlRpbWVvdXRFcnJvclwiO1xuICAgICAgICB0aHJvdyB0aW1lb3V0RXJyb3I7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlc3VsdC5zdGF0ZSAhPT0gZXhwb3J0cy5XYWl0ZXJTdGF0ZS5TVUNDRVNTKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeShyZXN1bHQsIGdldENpcmN1bGFyUmVwbGFjZXIoKSl9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoSml0dGVyID0gKG1pbkRlbGF5LCBtYXhEZWxheSwgYXR0ZW1wdENlaWxpbmcsIGF0dGVtcHQpID0+IHtcbiAgICBpZiAoYXR0ZW1wdCA+IGF0dGVtcHRDZWlsaW5nKVxuICAgICAgICByZXR1cm4gbWF4RGVsYXk7XG4gICAgY29uc3QgZGVsYXkgPSBtaW5EZWxheSAqIDIgKiogKGF0dGVtcHQgLSAxKTtcbiAgICByZXR1cm4gcmFuZG9tSW5SYW5nZShtaW5EZWxheSwgZGVsYXkpO1xufTtcbmNvbnN0IHJhbmRvbUluUmFuZ2UgPSAobWluLCBtYXgpID0+IG1pbiArIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKTtcbmNvbnN0IHJ1blBvbGxpbmcgPSBhc3luYyAoeyBtaW5EZWxheSwgbWF4RGVsYXksIG1heFdhaXRUaW1lLCBhYm9ydENvbnRyb2xsZXIsIGNsaWVudCwgYWJvcnRTaWduYWwgfSwgaW5wdXQsIGFjY2VwdG9yQ2hlY2tzKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRSZXNwb25zZXMgPSB7fTtcbiAgICBjb25zdCB7IHN0YXRlLCByZWFzb24gfSA9IGF3YWl0IGFjY2VwdG9yQ2hlY2tzKGNsaWVudCwgaW5wdXQpO1xuICAgIGlmIChyZWFzb24pIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VGcm9tUmVzcG9uc2UocmVhc29uKTtcbiAgICAgICAgb2JzZXJ2ZWRSZXNwb25zZXNbbWVzc2FnZV0gfD0gMDtcbiAgICAgICAgb2JzZXJ2ZWRSZXNwb25zZXNbbWVzc2FnZV0gKz0gMTtcbiAgICB9XG4gICAgaWYgKHN0YXRlICE9PSBleHBvcnRzLldhaXRlclN0YXRlLlJFVFJZKSB7XG4gICAgICAgIHJldHVybiB7IHN0YXRlLCByZWFzb24sIG9ic2VydmVkUmVzcG9uc2VzIH07XG4gICAgfVxuICAgIGxldCBjdXJyZW50QXR0ZW1wdCA9IDE7XG4gICAgY29uc3Qgd2FpdFVudGlsID0gRGF0ZS5ub3coKSArIG1heFdhaXRUaW1lICogMTAwMDtcbiAgICBjb25zdCBhdHRlbXB0Q2VpbGluZyA9IE1hdGgubG9nKG1heERlbGF5IC8gbWluRGVsYXkpIC8gTWF0aC5sb2coMikgKyAxO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXI/LnNpZ25hbD8uYWJvcnRlZCB8fCBhYm9ydFNpZ25hbD8uYWJvcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiQWJvcnRDb250cm9sbGVyIHNpZ25hbCBhYm9ydGVkLlwiO1xuICAgICAgICAgICAgb2JzZXJ2ZWRSZXNwb25zZXNbbWVzc2FnZV0gfD0gMDtcbiAgICAgICAgICAgIG9ic2VydmVkUmVzcG9uc2VzW21lc3NhZ2VdICs9IDE7XG4gICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogZXhwb3J0cy5XYWl0ZXJTdGF0ZS5BQk9SVEVELCBvYnNlcnZlZFJlc3BvbnNlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlbGF5ID0gZXhwb25lbnRpYWxCYWNrb2ZmV2l0aEppdHRlcihtaW5EZWxheSwgbWF4RGVsYXksIGF0dGVtcHRDZWlsaW5nLCBjdXJyZW50QXR0ZW1wdCk7XG4gICAgICAgIGlmIChEYXRlLm5vdygpICsgZGVsYXkgKiAxMDAwID4gd2FpdFVudGlsKSB7XG4gICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogZXhwb3J0cy5XYWl0ZXJTdGF0ZS5USU1FT1VULCBvYnNlcnZlZFJlc3BvbnNlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKGRlbGF5KTtcbiAgICAgICAgY29uc3QgeyBzdGF0ZSwgcmVhc29uIH0gPSBhd2FpdCBhY2NlcHRvckNoZWNrcyhjbGllbnQsIGlucHV0KTtcbiAgICAgICAgaWYgKHJlYXNvbikge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VGcm9tUmVzcG9uc2UocmVhc29uKTtcbiAgICAgICAgICAgIG9ic2VydmVkUmVzcG9uc2VzW21lc3NhZ2VdIHw9IDA7XG4gICAgICAgICAgICBvYnNlcnZlZFJlc3BvbnNlc1ttZXNzYWdlXSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZSAhPT0gZXhwb3J0cy5XYWl0ZXJTdGF0ZS5SRVRSWSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGUsIHJlYXNvbiwgb2JzZXJ2ZWRSZXNwb25zZXMgfTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50QXR0ZW1wdCArPSAxO1xuICAgIH1cbn07XG5jb25zdCBjcmVhdGVNZXNzYWdlRnJvbVJlc3BvbnNlID0gKHJlYXNvbikgPT4ge1xuICAgIGlmIChyZWFzb24/LiRyZXNwb25zZUJvZHlUZXh0KSB7XG4gICAgICAgIHJldHVybiBgRGVzZXJpYWxpemF0aW9uIGVycm9yIGZvciBib2R5OiAke3JlYXNvbi4kcmVzcG9uc2VCb2R5VGV4dH1gO1xuICAgIH1cbiAgICBpZiAocmVhc29uPy4kbWV0YWRhdGE/Lmh0dHBTdGF0dXNDb2RlKSB7XG4gICAgICAgIGlmIChyZWFzb24uJHJlc3BvbnNlIHx8IHJlYXNvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVhc29uLiRyZXNwb25zZS5zdGF0dXNDb2RlID8/IHJlYXNvbi4kbWV0YWRhdGEuaHR0cFN0YXR1c0NvZGUgPz8gXCJVbmtub3duXCJ9OiAke3JlYXNvbi5tZXNzYWdlfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3JlYXNvbi4kbWV0YWRhdGEuaHR0cFN0YXR1c0NvZGV9OiBPS2A7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcocmVhc29uPy5tZXNzYWdlID8/IEpTT04uc3RyaW5naWZ5KHJlYXNvbiwgZ2V0Q2lyY3VsYXJSZXBsYWNlcigpKSA/PyBcIlVua25vd25cIik7XG59O1xuXG5jb25zdCB2YWxpZGF0ZVdhaXRlck9wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICAgIGlmIChvcHRpb25zLm1heFdhaXRUaW1lIDw9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXYWl0ZXJDb25maWd1cmF0aW9uLm1heFdhaXRUaW1lIG11c3QgYmUgZ3JlYXRlciB0aGFuIDBgKTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucy5taW5EZWxheSA8PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgV2FpdGVyQ29uZmlndXJhdGlvbi5taW5EZWxheSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwYCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMubWF4RGVsYXkgPD0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdhaXRlckNvbmZpZ3VyYXRpb24ubWF4RGVsYXkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMGApO1xuICAgIH1cbiAgICBlbHNlIGlmIChvcHRpb25zLm1heFdhaXRUaW1lIDw9IG9wdGlvbnMubWluRGVsYXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXYWl0ZXJDb25maWd1cmF0aW9uLm1heFdhaXRUaW1lIFske29wdGlvbnMubWF4V2FpdFRpbWV9XSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBXYWl0ZXJDb25maWd1cmF0aW9uLm1pbkRlbGF5IFske29wdGlvbnMubWluRGVsYXl9XSBmb3IgdGhpcyB3YWl0ZXJgKTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucy5tYXhEZWxheSA8IG9wdGlvbnMubWluRGVsYXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXYWl0ZXJDb25maWd1cmF0aW9uLm1heERlbGF5IFske29wdGlvbnMubWF4RGVsYXl9XSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBXYWl0ZXJDb25maWd1cmF0aW9uLm1pbkRlbGF5IFske29wdGlvbnMubWluRGVsYXl9XSBmb3IgdGhpcyB3YWl0ZXJgKTtcbiAgICB9XG59O1xuXG5jb25zdCBhYm9ydFRpbWVvdXQgPSAoYWJvcnRTaWduYWwpID0+IHtcbiAgICBsZXQgb25BYm9ydDtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgb25BYm9ydCA9ICgpID0+IHJlc29sdmUoeyBzdGF0ZTogZXhwb3J0cy5XYWl0ZXJTdGF0ZS5BQk9SVEVEIH0pO1xuICAgICAgICBpZiAodHlwZW9mIGFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWJvcnRTaWduYWwub25hYm9ydCA9IG9uQWJvcnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBjbGVhckxpc3RlbmVyKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhYm9ydFNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBhYm9ydFNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0ZWQ6IHByb21pc2UsXG4gICAgfTtcbn07XG5jb25zdCBjcmVhdGVXYWl0ZXIgPSBhc3luYyAob3B0aW9ucywgaW5wdXQsIGFjY2VwdG9yQ2hlY2tzKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAuLi53YWl0ZXJTZXJ2aWNlRGVmYXVsdHMsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgICB2YWxpZGF0ZVdhaXRlck9wdGlvbnMocGFyYW1zKTtcbiAgICBjb25zdCBleGl0Q29uZGl0aW9ucyA9IFtydW5Qb2xsaW5nKHBhcmFtcywgaW5wdXQsIGFjY2VwdG9yQ2hlY2tzKV07XG4gICAgY29uc3QgZmluYWxpemUgPSBbXTtcbiAgICBpZiAob3B0aW9ucy5hYm9ydFNpZ25hbCkge1xuICAgICAgICBjb25zdCB7IGFib3J0ZWQsIGNsZWFyTGlzdGVuZXIgfSA9IGFib3J0VGltZW91dChvcHRpb25zLmFib3J0U2lnbmFsKTtcbiAgICAgICAgZmluYWxpemUucHVzaChjbGVhckxpc3RlbmVyKTtcbiAgICAgICAgZXhpdENvbmRpdGlvbnMucHVzaChhYm9ydGVkKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWJvcnRDb250cm9sbGVyPy5zaWduYWwpIHtcbiAgICAgICAgY29uc3QgeyBhYm9ydGVkLCBjbGVhckxpc3RlbmVyIH0gPSBhYm9ydFRpbWVvdXQob3B0aW9ucy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgICAgZmluYWxpemUucHVzaChjbGVhckxpc3RlbmVyKTtcbiAgICAgICAgZXhpdENvbmRpdGlvbnMucHVzaChhYm9ydGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShleGl0Q29uZGl0aW9ucykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZm4gb2YgZmluYWxpemUpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydHMuY2hlY2tFeGNlcHRpb25zID0gY2hlY2tFeGNlcHRpb25zO1xuZXhwb3J0cy5jcmVhdGVXYWl0ZXIgPSBjcmVhdGVXYWl0ZXI7XG5leHBvcnRzLndhaXRlclNlcnZpY2VEZWZhdWx0cyA9IHdhaXRlclNlcnZpY2VEZWZhdWx0cztcbiIsCiAgICAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbWlkZGxld2FyZUhvc3RIZWFkZXIgPSByZXF1aXJlKCdAYXdzLXNkay9taWRkbGV3YXJlLWhvc3QtaGVhZGVyJyk7XG52YXIgbWlkZGxld2FyZUxvZ2dlciA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL21pZGRsZXdhcmUtbG9nZ2VyJyk7XG52YXIgbWlkZGxld2FyZVJlY3Vyc2lvbkRldGVjdGlvbiA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL21pZGRsZXdhcmUtcmVjdXJzaW9uLWRldGVjdGlvbicpO1xudmFyIG1pZGRsZXdhcmVVc2VyQWdlbnQgPSByZXF1aXJlKCdAYXdzLXNkay9taWRkbGV3YXJlLXVzZXItYWdlbnQnKTtcbnZhciBjb25maWdSZXNvbHZlciA9IHJlcXVpcmUoJ0BzbWl0aHkvY29uZmlnLXJlc29sdmVyJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJ0BzbWl0aHkvY29yZScpO1xudmFyIHNjaGVtYSA9IHJlcXVpcmUoJ0BzbWl0aHkvY29yZS9zY2hlbWEnKTtcbnZhciBldmVudHN0cmVhbVNlcmRlQ29uZmlnUmVzb2x2ZXIgPSByZXF1aXJlKCdAc21pdGh5L2V2ZW50c3RyZWFtLXNlcmRlLWNvbmZpZy1yZXNvbHZlcicpO1xudmFyIG1pZGRsZXdhcmVDb250ZW50TGVuZ3RoID0gcmVxdWlyZSgnQHNtaXRoeS9taWRkbGV3YXJlLWNvbnRlbnQtbGVuZ3RoJyk7XG52YXIgbWlkZGxld2FyZUVuZHBvaW50ID0gcmVxdWlyZSgnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50Jyk7XG52YXIgbWlkZGxld2FyZVJldHJ5ID0gcmVxdWlyZSgnQHNtaXRoeS9taWRkbGV3YXJlLXJldHJ5Jyk7XG52YXIgc21pdGh5Q2xpZW50ID0gcmVxdWlyZSgnQHNtaXRoeS9zbWl0aHktY2xpZW50Jyk7XG52YXIgaHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IHJlcXVpcmUoJy4vYXV0aC9odHRwQXV0aFNjaGVtZVByb3ZpZGVyJyk7XG52YXIgcnVudGltZUNvbmZpZyA9IHJlcXVpcmUoJy4vcnVudGltZUNvbmZpZycpO1xudmFyIHJlZ2lvbkNvbmZpZ1Jlc29sdmVyID0gcmVxdWlyZSgnQGF3cy1zZGsvcmVnaW9uLWNvbmZpZy1yZXNvbHZlcicpO1xudmFyIHByb3RvY29sSHR0cCA9IHJlcXVpcmUoJ0BzbWl0aHkvcHJvdG9jb2wtaHR0cCcpO1xudmFyIHV0aWxXYWl0ZXIgPSByZXF1aXJlKCdAc21pdGh5L3V0aWwtd2FpdGVyJyk7XG5cbmNvbnN0IHJlc29sdmVDbGllbnRFbmRwb2ludFBhcmFtZXRlcnMgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHtcbiAgICAgICAgdXNlRHVhbHN0YWNrRW5kcG9pbnQ6IG9wdGlvbnMudXNlRHVhbHN0YWNrRW5kcG9pbnQgPz8gZmFsc2UsXG4gICAgICAgIHVzZUZpcHNFbmRwb2ludDogb3B0aW9ucy51c2VGaXBzRW5kcG9pbnQgPz8gZmFsc2UsXG4gICAgICAgIGRlZmF1bHRTaWduaW5nTmFtZTogXCJsYW1iZGFcIixcbiAgICB9KTtcbn07XG5jb25zdCBjb21tb25QYXJhbXMgPSB7XG4gICAgVXNlRklQUzogeyB0eXBlOiBcImJ1aWx0SW5QYXJhbXNcIiwgbmFtZTogXCJ1c2VGaXBzRW5kcG9pbnRcIiB9LFxuICAgIEVuZHBvaW50OiB7IHR5cGU6IFwiYnVpbHRJblBhcmFtc1wiLCBuYW1lOiBcImVuZHBvaW50XCIgfSxcbiAgICBSZWdpb246IHsgdHlwZTogXCJidWlsdEluUGFyYW1zXCIsIG5hbWU6IFwicmVnaW9uXCIgfSxcbiAgICBVc2VEdWFsU3RhY2s6IHsgdHlwZTogXCJidWlsdEluUGFyYW1zXCIsIG5hbWU6IFwidXNlRHVhbHN0YWNrRW5kcG9pbnRcIiB9LFxufTtcblxuY29uc3QgZ2V0SHR0cEF1dGhFeHRlbnNpb25Db25maWd1cmF0aW9uID0gKHJ1bnRpbWVDb25maWcpID0+IHtcbiAgICBjb25zdCBfaHR0cEF1dGhTY2hlbWVzID0gcnVudGltZUNvbmZpZy5odHRwQXV0aFNjaGVtZXM7XG4gICAgbGV0IF9odHRwQXV0aFNjaGVtZVByb3ZpZGVyID0gcnVudGltZUNvbmZpZy5odHRwQXV0aFNjaGVtZVByb3ZpZGVyO1xuICAgIGxldCBfY3JlZGVudGlhbHMgPSBydW50aW1lQ29uZmlnLmNyZWRlbnRpYWxzO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNldEh0dHBBdXRoU2NoZW1lKGh0dHBBdXRoU2NoZW1lKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IF9odHRwQXV0aFNjaGVtZXMuZmluZEluZGV4KChzY2hlbWUpID0+IHNjaGVtZS5zY2hlbWVJZCA9PT0gaHR0cEF1dGhTY2hlbWUuc2NoZW1lSWQpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIF9odHRwQXV0aFNjaGVtZXMucHVzaChodHRwQXV0aFNjaGVtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfaHR0cEF1dGhTY2hlbWVzLnNwbGljZShpbmRleCwgMSwgaHR0cEF1dGhTY2hlbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBodHRwQXV0aFNjaGVtZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gX2h0dHBBdXRoU2NoZW1lcztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0SHR0cEF1dGhTY2hlbWVQcm92aWRlcihodHRwQXV0aFNjaGVtZVByb3ZpZGVyKSB7XG4gICAgICAgICAgICBfaHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IGh0dHBBdXRoU2NoZW1lUHJvdmlkZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGh0dHBBdXRoU2NoZW1lUHJvdmlkZXIoKSB7XG4gICAgICAgICAgICByZXR1cm4gX2h0dHBBdXRoU2NoZW1lUHJvdmlkZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKSB7XG4gICAgICAgICAgICBfY3JlZGVudGlhbHMgPSBjcmVkZW50aWFscztcbiAgICAgICAgfSxcbiAgICAgICAgY3JlZGVudGlhbHMoKSB7XG4gICAgICAgICAgICByZXR1cm4gX2NyZWRlbnRpYWxzO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuY29uc3QgcmVzb2x2ZUh0dHBBdXRoUnVudGltZUNvbmZpZyA9IChjb25maWcpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBodHRwQXV0aFNjaGVtZXM6IGNvbmZpZy5odHRwQXV0aFNjaGVtZXMoKSxcbiAgICAgICAgaHR0cEF1dGhTY2hlbWVQcm92aWRlcjogY29uZmlnLmh0dHBBdXRoU2NoZW1lUHJvdmlkZXIoKSxcbiAgICAgICAgY3JlZGVudGlhbHM6IGNvbmZpZy5jcmVkZW50aWFscygpLFxuICAgIH07XG59O1xuXG5jb25zdCByZXNvbHZlUnVudGltZUV4dGVuc2lvbnMgPSAocnVudGltZUNvbmZpZywgZXh0ZW5zaW9ucykgPT4ge1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHJlZ2lvbkNvbmZpZ1Jlc29sdmVyLmdldEF3c1JlZ2lvbkV4dGVuc2lvbkNvbmZpZ3VyYXRpb24ocnVudGltZUNvbmZpZyksIHNtaXRoeUNsaWVudC5nZXREZWZhdWx0RXh0ZW5zaW9uQ29uZmlndXJhdGlvbihydW50aW1lQ29uZmlnKSwgcHJvdG9jb2xIdHRwLmdldEh0dHBIYW5kbGVyRXh0ZW5zaW9uQ29uZmlndXJhdGlvbihydW50aW1lQ29uZmlnKSwgZ2V0SHR0cEF1dGhFeHRlbnNpb25Db25maWd1cmF0aW9uKHJ1bnRpbWVDb25maWcpKTtcbiAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uLmNvbmZpZ3VyZShleHRlbnNpb25Db25maWd1cmF0aW9uKSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocnVudGltZUNvbmZpZywgcmVnaW9uQ29uZmlnUmVzb2x2ZXIucmVzb2x2ZUF3c1JlZ2lvbkV4dGVuc2lvbkNvbmZpZ3VyYXRpb24oZXh0ZW5zaW9uQ29uZmlndXJhdGlvbiksIHNtaXRoeUNsaWVudC5yZXNvbHZlRGVmYXVsdFJ1bnRpbWVDb25maWcoZXh0ZW5zaW9uQ29uZmlndXJhdGlvbiksIHByb3RvY29sSHR0cC5yZXNvbHZlSHR0cEhhbmRsZXJSdW50aW1lQ29uZmlnKGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24pLCByZXNvbHZlSHR0cEF1dGhSdW50aW1lQ29uZmlnKGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24pKTtcbn07XG5cbmNsYXNzIExhbWJkYUNsaWVudCBleHRlbmRzIHNtaXRoeUNsaWVudC5DbGllbnQge1xuICAgIGNvbmZpZztcbiAgICBjb25zdHJ1Y3RvciguLi5bY29uZmlndXJhdGlvbl0pIHtcbiAgICAgICAgY29uc3QgX2NvbmZpZ18wID0gcnVudGltZUNvbmZpZy5nZXRSdW50aW1lQ29uZmlnKGNvbmZpZ3VyYXRpb24gfHwge30pO1xuICAgICAgICBzdXBlcihfY29uZmlnXzApO1xuICAgICAgICB0aGlzLmluaXRDb25maWcgPSBfY29uZmlnXzA7XG4gICAgICAgIGNvbnN0IF9jb25maWdfMSA9IHJlc29sdmVDbGllbnRFbmRwb2ludFBhcmFtZXRlcnMoX2NvbmZpZ18wKTtcbiAgICAgICAgY29uc3QgX2NvbmZpZ18yID0gbWlkZGxld2FyZVVzZXJBZ2VudC5yZXNvbHZlVXNlckFnZW50Q29uZmlnKF9jb25maWdfMSk7XG4gICAgICAgIGNvbnN0IF9jb25maWdfMyA9IG1pZGRsZXdhcmVSZXRyeS5yZXNvbHZlUmV0cnlDb25maWcoX2NvbmZpZ18yKTtcbiAgICAgICAgY29uc3QgX2NvbmZpZ180ID0gY29uZmlnUmVzb2x2ZXIucmVzb2x2ZVJlZ2lvbkNvbmZpZyhfY29uZmlnXzMpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzUgPSBtaWRkbGV3YXJlSG9zdEhlYWRlci5yZXNvbHZlSG9zdEhlYWRlckNvbmZpZyhfY29uZmlnXzQpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzYgPSBtaWRkbGV3YXJlRW5kcG9pbnQucmVzb2x2ZUVuZHBvaW50Q29uZmlnKF9jb25maWdfNSk7XG4gICAgICAgIGNvbnN0IF9jb25maWdfNyA9IGV2ZW50c3RyZWFtU2VyZGVDb25maWdSZXNvbHZlci5yZXNvbHZlRXZlbnRTdHJlYW1TZXJkZUNvbmZpZyhfY29uZmlnXzYpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzggPSBodHRwQXV0aFNjaGVtZVByb3ZpZGVyLnJlc29sdmVIdHRwQXV0aFNjaGVtZUNvbmZpZyhfY29uZmlnXzcpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzkgPSByZXNvbHZlUnVudGltZUV4dGVuc2lvbnMoX2NvbmZpZ184LCBjb25maWd1cmF0aW9uPy5leHRlbnNpb25zIHx8IFtdKTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBfY29uZmlnXzk7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShzY2hlbWEuZ2V0U2NoZW1hU2VyZGVQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVVc2VyQWdlbnQuZ2V0VXNlckFnZW50UGx1Z2luKHRoaXMuY29uZmlnKSk7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShtaWRkbGV3YXJlUmV0cnkuZ2V0UmV0cnlQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVDb250ZW50TGVuZ3RoLmdldENvbnRlbnRMZW5ndGhQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVIb3N0SGVhZGVyLmdldEhvc3RIZWFkZXJQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVMb2dnZXIuZ2V0TG9nZ2VyUGx1Z2luKHRoaXMuY29uZmlnKSk7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShtaWRkbGV3YXJlUmVjdXJzaW9uRGV0ZWN0aW9uLmdldFJlY3Vyc2lvbkRldGVjdGlvblBsdWdpbih0aGlzLmNvbmZpZykpO1xuICAgICAgICB0aGlzLm1pZGRsZXdhcmVTdGFjay51c2UoY29yZS5nZXRIdHRwQXV0aFNjaGVtZUVuZHBvaW50UnVsZVNldFBsdWdpbih0aGlzLmNvbmZpZywge1xuICAgICAgICAgICAgaHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXI6IGh0dHBBdXRoU2NoZW1lUHJvdmlkZXIuZGVmYXVsdExhbWJkYUh0dHBBdXRoU2NoZW1lUGFyYW1ldGVyc1Byb3ZpZGVyLFxuICAgICAgICAgICAgaWRlbnRpdHlQcm92aWRlckNvbmZpZ1Byb3ZpZGVyOiBhc3luYyAoY29uZmlnKSA9PiBuZXcgY29yZS5EZWZhdWx0SWRlbnRpdHlQcm92aWRlckNvbmZpZyh7XG4gICAgICAgICAgICAgICAgXCJhd3MuYXV0aCNzaWd2NFwiOiBjb25maWcuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm1pZGRsZXdhcmVTdGFjay51c2UoY29yZS5nZXRIdHRwU2lnbmluZ1BsdWdpbih0aGlzLmNvbmZpZykpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgfVxufVxuXG5sZXQgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxID0gY2xhc3MgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiBleHRlbmRzIHNtaXRoeUNsaWVudC5TZXJ2aWNlRXhjZXB0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTGFtYmRhU2VydmljZUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgIH1cbn07XG5cbmxldCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFeGNlcHRpb24kMSA9IGNsYXNzIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJJbnZhbGlkUGFyYW1ldGVyVmFsdWVFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICB9XG59O1xubGV0IFBvbGljeUxlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uJDEgPSBjbGFzcyBQb2xpY3lMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUG9saWN5TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIlBvbGljeUxlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFBvbGljeUxlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICB9XG59O1xubGV0IFByZWNvbmRpdGlvbkZhaWxlZEV4Y2VwdGlvbiQxID0gY2xhc3MgUHJlY29uZGl0aW9uRmFpbGVkRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJQcmVjb25kaXRpb25GYWlsZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIlByZWNvbmRpdGlvbkZhaWxlZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBQcmVjb25kaXRpb25GYWlsZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgIH1cbn07XG5sZXQgUmVzb3VyY2VDb25mbGljdEV4Y2VwdGlvbiQxID0gY2xhc3MgUmVzb3VyY2VDb25mbGljdEV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUmVzb3VyY2VDb25mbGljdEV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiUmVzb3VyY2VDb25mbGljdEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBSZXNvdXJjZUNvbmZsaWN0RXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICB9XG59O1xubGV0IFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24kMSA9IGNsYXNzIFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlJlc291cmNlTm90Rm91bmRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgU2VydmljZUV4Y2VwdGlvbiQxID0gY2xhc3MgU2VydmljZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiU2VydmljZUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwic2VydmVyXCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJTZXJ2aWNlRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwic2VydmVyXCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFNlcnZpY2VFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBUb29NYW55UmVxdWVzdHNFeGNlcHRpb24kMSA9IGNsYXNzIFRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICByZXRyeUFmdGVyU2Vjb25kcztcbiAgICBUeXBlO1xuICAgIFJlYXNvbjtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLnJldHJ5QWZ0ZXJTZWNvbmRzID0gb3B0cy5yZXRyeUFmdGVyU2Vjb25kcztcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLlJlYXNvbiA9IG9wdHMuUmVhc29uO1xuICAgIH1cbn07XG5sZXQgUmVzb3VyY2VJblVzZUV4Y2VwdGlvbiQxID0gY2xhc3MgUmVzb3VyY2VJblVzZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUmVzb3VyY2VJblVzZUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJSZXNvdXJjZUluVXNlRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFJlc291cmNlSW5Vc2VFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXhjZXB0aW9uJDEgPSBjbGFzcyBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkNvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IENvZGVTdG9yYWdlRXhjZWVkZWRFeGNlcHRpb24kMSA9IGNsYXNzIENvZGVTdG9yYWdlRXhjZWVkZWRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIkNvZGVTdG9yYWdlRXhjZWVkZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkNvZGVTdG9yYWdlRXhjZWVkZWRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29kZVN0b3JhZ2VFeGNlZWRlZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgfVxufTtcbmxldCBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXhjZXB0aW9uJDEgPSBjbGFzcyBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkNvZGVWZXJpZmljYXRpb25GYWlsZWRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEludmFsaWRDb2RlU2lnbmF0dXJlRXhjZXB0aW9uJDEgPSBjbGFzcyBJbnZhbGlkQ29kZVNpZ25hdHVyZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiSW52YWxpZENvZGVTaWduYXR1cmVFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW52YWxpZENvZGVTaWduYXR1cmVFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW52YWxpZENvZGVTaWduYXR1cmVFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBFQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb24kMSA9IGNsYXNzIEVDMkFjY2Vzc0RlbmllZEV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiRUMyQWNjZXNzRGVuaWVkRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJzZXJ2ZXJcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkVDMkFjY2Vzc0RlbmllZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBFQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBFQzJUaHJvdHRsZWRFeGNlcHRpb24kMSA9IGNsYXNzIEVDMlRocm90dGxlZEV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiRUMyVGhyb3R0bGVkRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJzZXJ2ZXJcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkVDMlRocm90dGxlZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBFQzJUaHJvdHRsZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBFQzJVbmV4cGVjdGVkRXhjZXB0aW9uJDEgPSBjbGFzcyBFQzJVbmV4cGVjdGVkRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJFQzJVbmV4cGVjdGVkRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJzZXJ2ZXJcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgRUMyRXJyb3JDb2RlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJFQzJVbmV4cGVjdGVkRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwic2VydmVyXCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEVDMlVuZXhwZWN0ZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgICAgIHRoaXMuRUMyRXJyb3JDb2RlID0gb3B0cy5FQzJFcnJvckNvZGU7XG4gICAgfVxufTtcbmxldCBFRlNJT0V4Y2VwdGlvbiQxID0gY2xhc3MgRUZTSU9FeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIkVGU0lPRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkVGU0lPRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEVGU0lPRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgRUZTTW91bnRDb25uZWN0aXZpdHlFeGNlcHRpb24kMSA9IGNsYXNzIEVGU01vdW50Q29ubmVjdGl2aXR5RXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJFRlNNb3VudENvbm5lY3Rpdml0eUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJFRlNNb3VudENvbm5lY3Rpdml0eUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBFRlNNb3VudENvbm5lY3Rpdml0eUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEVGU01vdW50RmFpbHVyZUV4Y2VwdGlvbiQxID0gY2xhc3MgRUZTTW91bnRGYWlsdXJlRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJFRlNNb3VudEZhaWx1cmVFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiRUZTTW91bnRGYWlsdXJlRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEVGU01vdW50RmFpbHVyZUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEVGU01vdW50VGltZW91dEV4Y2VwdGlvbiQxID0gY2xhc3MgRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJFRlNNb3VudFRpbWVvdXRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEVGU01vdW50VGltZW91dEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbiQxID0gY2xhc3MgRU5JTGltaXRSZWFjaGVkRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJFTklMaW1pdFJlYWNoZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiRU5JTGltaXRSZWFjaGVkRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwic2VydmVyXCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEludmFsaWRSZXF1ZXN0Q29udGVudEV4Y2VwdGlvbiQxID0gY2xhc3MgSW52YWxpZFJlcXVlc3RDb250ZW50RXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJJbnZhbGlkUmVxdWVzdENvbnRlbnRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkludmFsaWRSZXF1ZXN0Q29udGVudEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgIH1cbn07XG5sZXQgSW52YWxpZFJ1bnRpbWVFeGNlcHRpb24kMSA9IGNsYXNzIEludmFsaWRSdW50aW1lRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJJbnZhbGlkUnVudGltZUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwic2VydmVyXCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJJbnZhbGlkUnVudGltZUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkUnVudGltZUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEludmFsaWRTZWN1cml0eUdyb3VwSURFeGNlcHRpb24kMSA9IGNsYXNzIEludmFsaWRTZWN1cml0eUdyb3VwSURFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIkludmFsaWRTZWN1cml0eUdyb3VwSURFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW52YWxpZFNlY3VyaXR5R3JvdXBJREV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgSW52YWxpZFN1Ym5ldElERXhjZXB0aW9uJDEgPSBjbGFzcyBJbnZhbGlkU3VibmV0SURFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIkludmFsaWRTdWJuZXRJREV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwic2VydmVyXCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJJbnZhbGlkU3VibmV0SURFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJzZXJ2ZXJcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW52YWxpZFN1Ym5ldElERXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgSW52YWxpZFppcEZpbGVFeGNlcHRpb24kMSA9IGNsYXNzIEludmFsaWRaaXBGaWxlRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwic2VydmVyXCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEtNU0FjY2Vzc0RlbmllZEV4Y2VwdGlvbiQxID0gY2xhc3MgS01TQWNjZXNzRGVuaWVkRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJLTVNBY2Nlc3NEZW5pZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiS01TQWNjZXNzRGVuaWVkRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwic2VydmVyXCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEtNU0FjY2Vzc0RlbmllZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEtNU0Rpc2FibGVkRXhjZXB0aW9uJDEgPSBjbGFzcyBLTVNEaXNhYmxlZEV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiS01TRGlzYWJsZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiS01TRGlzYWJsZWRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJzZXJ2ZXJcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgS01TRGlzYWJsZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBLTVNJbnZhbGlkU3RhdGVFeGNlcHRpb24kMSA9IGNsYXNzIEtNU0ludmFsaWRTdGF0ZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiS01TSW52YWxpZFN0YXRlRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJzZXJ2ZXJcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIktNU0ludmFsaWRTdGF0ZUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBLTVNJbnZhbGlkU3RhdGVFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBLTVNOb3RGb3VuZEV4Y2VwdGlvbiQxID0gY2xhc3MgS01TTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIktNU05vdEZvdW5kRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJzZXJ2ZXJcIjtcbiAgICBUeXBlO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIktNU05vdEZvdW5kRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwic2VydmVyXCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEtNU05vdEZvdW5kRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgUmVjdXJzaXZlSW52b2NhdGlvbkV4Y2VwdGlvbiQxID0gY2xhc3MgUmVjdXJzaXZlSW52b2NhdGlvbkV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUmVjdXJzaXZlSW52b2NhdGlvbkV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJSZWN1cnNpdmVJbnZvY2F0aW9uRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFJlY3Vyc2l2ZUludm9jYXRpb25FeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgICAgICB0aGlzLk1lc3NhZ2UgPSBvcHRzLk1lc3NhZ2U7XG4gICAgfVxufTtcbmxldCBSZXF1ZXN0VG9vTGFyZ2VFeGNlcHRpb24kMSA9IGNsYXNzIFJlcXVlc3RUb29MYXJnZUV4Y2VwdGlvbiBleHRlbmRzIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJSZXF1ZXN0VG9vTGFyZ2VFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICB9XG59O1xubGV0IFJlc291cmNlTm90UmVhZHlFeGNlcHRpb24kMSA9IGNsYXNzIFJlc291cmNlTm90UmVhZHlFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlJlc291cmNlTm90UmVhZHlFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIFR5cGU7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIlJlc291cmNlTm90UmVhZHlFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJzZXJ2ZXJcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgUmVzb3VyY2VOb3RSZWFkeUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgfVxufTtcbmxldCBTZXJpYWxpemVkUmVxdWVzdEVudGl0eVRvb0xhcmdlRXhjZXB0aW9uJDEgPSBjbGFzcyBTZXJpYWxpemVkUmVxdWVzdEVudGl0eVRvb0xhcmdlRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJTZXJpYWxpemVkUmVxdWVzdEVudGl0eVRvb0xhcmdlRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBUeXBlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJTZXJpYWxpemVkUmVxdWVzdEVudGl0eVRvb0xhcmdlRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFNlcmlhbGl6ZWRSZXF1ZXN0RW50aXR5VG9vTGFyZ2VFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgIH1cbn07XG5sZXQgU25hcFN0YXJ0RXhjZXB0aW9uJDEgPSBjbGFzcyBTbmFwU3RhcnRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlNuYXBTdGFydEV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJTbmFwU3RhcnRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgU25hcFN0YXJ0RXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgU25hcFN0YXJ0Tm90UmVhZHlFeGNlcHRpb24kMSA9IGNsYXNzIFNuYXBTdGFydE5vdFJlYWR5RXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJTbmFwU3RhcnROb3RSZWFkeUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJTbmFwU3RhcnROb3RSZWFkeUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBTbmFwU3RhcnROb3RSZWFkeUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IFNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb24kMSA9IGNsYXNzIFNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIFR5cGU7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiU25hcFN0YXJ0VGltZW91dEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBTbmFwU3RhcnRUaW1lb3V0RXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXhjZXB0aW9uJDEgPSBjbGFzcyBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwic2VydmVyXCI7XG4gICAgVHlwZTtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJzZXJ2ZXJcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuVHlwZSA9IG9wdHMuVHlwZTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb24kMSA9IGNsYXNzIFVuc3VwcG9ydGVkTWVkaWFUeXBlRXhjZXB0aW9uIGV4dGVuZHMgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJVbnN1cHBvcnRlZE1lZGlhVHlwZUV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb25cIixcbiAgICAgICAgICAgICRmYXVsdDogXCJjbGllbnRcIixcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5UeXBlID0gb3B0cy5UeXBlO1xuICAgIH1cbn07XG5sZXQgUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ05vdEZvdW5kRXhjZXB0aW9uJDEgPSBjbGFzcyBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uJDEge1xuICAgIG5hbWUgPSBcIlByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgVHlwZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ05vdEZvdW5kRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgICAgICB0aGlzLlR5cGUgPSBvcHRzLlR5cGU7XG4gICAgfVxufTtcblxuY29uc3QgX0EgPSBcIkFjdGlvblwiO1xuY29uc3QgX0FBID0gXCJBbGlhc0FyblwiO1xuY29uc3QgX0FDID0gXCJBbGlhc0NvbmZpZ3VyYXRpb25cIjtcbmNvbnN0IF9BQ2MgPSBcIkFjY2Vzc0NvbmZpZ3NcIjtcbmNvbnN0IF9BQ2wgPSBcIkFsbG93Q3JlZGVudGlhbHNcIjtcbmNvbnN0IF9BSCA9IFwiQWxsb3dIZWFkZXJzXCI7XG5jb25zdCBfQUwgPSBcIkFjY291bnRMaW1pdFwiO1xuY29uc3QgX0FMTCA9IFwiQXBwbGljYXRpb25Mb2dMZXZlbFwiO1xuY29uc3QgX0FMVlAgPSBcIkFkZExheWVyVmVyc2lvblBlcm1pc3Npb25cIjtcbmNvbnN0IF9BTFZQUiA9IFwiQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvblJlcXVlc3RcIjtcbmNvbnN0IF9BTFZQUmQgPSBcIkFkZExheWVyVmVyc2lvblBlcm1pc3Npb25SZXNwb25zZVwiO1xuY29uc3QgX0FMbCA9IFwiQWxpYXNMaXN0XCI7XG5jb25zdCBfQU0gPSBcIkFsbG93TWV0aG9kc1wiO1xuY29uc3QgX0FNS0VTQyA9IFwiQW1hem9uTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWdcIjtcbmNvbnN0IF9BTyA9IFwiQWxsb3dPcmlnaW5zXCI7XG5jb25zdCBfQU9wID0gXCJBcHBseU9uXCI7XG5jb25zdCBfQVAgPSBcIkFsbG93ZWRQdWJsaXNoZXJzXCI7XG5jb25zdCBfQVBDRSA9IFwiQXZhaWxhYmxlUHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9uc1wiO1xuY29uc3QgX0FQQ0VsID0gXCJBbGxvY2F0ZWRQcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zXCI7XG5jb25zdCBfQVBSID0gXCJBZGRQZXJtaXNzaW9uUmVxdWVzdFwiO1xuY29uc3QgX0FQUmQgPSBcIkFkZFBlcm1pc3Npb25SZXNwb25zZVwiO1xuY29uc3QgX0FQZCA9IFwiQWRkUGVybWlzc2lvblwiO1xuY29uc3QgX0FSQyA9IFwiQWxpYXNSb3V0aW5nQ29uZmlndXJhdGlvblwiO1xuY29uc3QgX0FUID0gXCJBdXRoVHlwZVwiO1xuY29uc3QgX0FVID0gXCJBY2NvdW50VXNhZ2VcIjtcbmNvbnN0IF9BVlcgPSBcIkFkZGl0aW9uYWxWZXJzaW9uV2VpZ2h0c1wiO1xuY29uc3QgX0FsID0gXCJBbGlhc2VzXCI7XG5jb25zdCBfQXIgPSBcIkFyY2hpdGVjdHVyZXNcIjtcbmNvbnN0IF9Bcm4gPSBcIkFyblwiO1xuY29uc3QgX0F0ID0gXCJBdHRyaWJ1dGVcIjtcbmNvbnN0IF9CID0gXCJCbG9iXCI7XG5jb25zdCBfQkJPRkUgPSBcIkJpc2VjdEJhdGNoT25GdW5jdGlvbkVycm9yXCI7XG5jb25zdCBfQlMgPSBcIkJsb2JTdHJlYW1cIjtcbmNvbnN0IF9CU2EgPSBcIkJhdGNoU2l6ZVwiO1xuY29uc3QgX0MgPSBcIkNvbmN1cnJlbmN5XCI7XG5jb25zdCBfQ0EgPSBcIkNvbXBhdGlibGVBcmNoaXRlY3R1cmVzXCI7XG5jb25zdCBfQ0FSID0gXCJDcmVhdGVBbGlhc1JlcXVlc3RcIjtcbmNvbnN0IF9DQW8gPSBcIkNvbXBhdGlibGVBcmNoaXRlY3R1cmVcIjtcbmNvbnN0IF9DQXIgPSBcIkNyZWF0ZUFsaWFzXCI7XG5jb25zdCBfQ0MgPSBcIkNsaWVudENvbnRleHRcIjtcbmNvbnN0IF9DQ1NDID0gXCJDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ1wiO1xuY29uc3QgX0NDU0NSID0gXCJDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9DQ1NDUnIgPSBcIkNyZWF0ZUNvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9DRCA9IFwiQ3JlYXRlZERhdGVcIjtcbmNvbnN0IF9DRSA9IFwiQ29uY3VycmVudEV4ZWN1dGlvbnNcIjtcbmNvbnN0IF9DRVNNID0gXCJDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdcIjtcbmNvbnN0IF9DRVNNUiA9IFwiQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdFwiO1xuY29uc3QgX0NGID0gXCJDcmVhdGVGdW5jdGlvblwiO1xuY29uc3QgX0NGUiA9IFwiQ3JlYXRlRnVuY3Rpb25SZXF1ZXN0XCI7XG5jb25zdCBfQ0ZVQyA9IFwiQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdcIjtcbmNvbnN0IF9DRlVDUiA9IFwiQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfQ0ZVQ1JyID0gXCJDcmVhdGVGdW5jdGlvblVybENvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfQ0dJID0gXCJDb25zdW1lckdyb3VwSWRcIjtcbmNvbnN0IF9DTiA9IFwiQ29sbGVjdGlvbk5hbWVcIjtcbmNvbnN0IF9DUiA9IFwiQ29tcGF0aWJsZVJ1bnRpbWVzXCI7XG5jb25zdCBfQ1JvID0gXCJDb21wYXRpYmxlUnVudGltZVwiO1xuY29uc3QgX0NTID0gXCJDb2RlU2l6ZVwiO1xuY29uc3QgX0NTQyA9IFwiQ29kZVNpZ25pbmdDb25maWdcIjtcbmNvbnN0IF9DU0NBID0gXCJDb2RlU2lnbmluZ0NvbmZpZ0FyblwiO1xuY29uc3QgX0NTQ0kgPSBcIkNvZGVTaWduaW5nQ29uZmlnSWRcIjtcbmNvbnN0IF9DU0NMID0gXCJDb2RlU2lnbmluZ0NvbmZpZ0xpc3RcIjtcbmNvbnN0IF9DU0NORkUgPSBcIkNvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb25cIjtcbmNvbnN0IF9DU0NvID0gXCJDb2RlU2lnbmluZ0NvbmZpZ3NcIjtcbmNvbnN0IF9DU0VFID0gXCJDb2RlU3RvcmFnZUV4Y2VlZGVkRXhjZXB0aW9uXCI7XG5jb25zdCBfQ1NQID0gXCJDb2RlU2lnbmluZ1BvbGljaWVzXCI7XG5jb25zdCBfQ1NVID0gXCJDb2RlU2l6ZVVuemlwcGVkXCI7XG5jb25zdCBfQ1NaID0gXCJDb2RlU2l6ZVppcHBlZFwiO1xuY29uc3QgX0NTbyA9IFwiQ29kZVNoYTI1NlwiO1xuY29uc3QgX0NUID0gXCJDcmVhdGlvblRpbWVcIjtcbmNvbnN0IF9DVF8gPSBcIkNvbnRlbnQtVHlwZVwiO1xuY29uc3QgX0NWRkUgPSBcIkNvZGVWZXJpZmljYXRpb25GYWlsZWRFeGNlcHRpb25cIjtcbmNvbnN0IF9DbyA9IFwiQ29yc1wiO1xuY29uc3QgX0NvZCA9IFwiQ29kZVwiO1xuY29uc3QgX0NvbSA9IFwiQ29tbWFuZFwiO1xuY29uc3QgX0NvbiA9IFwiQ29uZmlndXJhdGlvblwiO1xuY29uc3QgX0NvbnQgPSBcIkNvbnRlbnRcIjtcbmNvbnN0IF9EID0gXCJEZXNjcmlwdGlvblwiO1xuY29uc3QgX0RBID0gXCJEZWxldGVBbGlhc1wiO1xuY29uc3QgX0RBUiA9IFwiRGVsZXRlQWxpYXNSZXF1ZXN0XCI7XG5jb25zdCBfREMgPSBcIkRlc3RpbmF0aW9uQ29uZmlnXCI7XG5jb25zdCBfRENTQyA9IFwiRGVsZXRlQ29kZVNpZ25pbmdDb25maWdcIjtcbmNvbnN0IF9EQ1NDUiA9IFwiRGVsZXRlQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfRENTQ1JlID0gXCJEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfRERCRVNDID0gXCJEb2N1bWVudERCRXZlbnRTb3VyY2VDb25maWdcIjtcbmNvbnN0IF9ERVNNID0gXCJEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdcIjtcbmNvbnN0IF9ERVNNUiA9IFwiRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdFwiO1xuY29uc3QgX0RGID0gXCJEZWxldGVGdW5jdGlvblwiO1xuY29uc3QgX0RGQyA9IFwiRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeVwiO1xuY29uc3QgX0RGQ1IgPSBcIkRlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lSZXF1ZXN0XCI7XG5jb25zdCBfREZDU0MgPSBcIkRlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdcIjtcbmNvbnN0IF9ERkNTQ1IgPSBcIkRlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfREZFSUMgPSBcIkRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdcIjtcbmNvbnN0IF9ERkVJQ1IgPSBcIkRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfREZSID0gXCJEZWxldGVGdW5jdGlvblJlcXVlc3RcIjtcbmNvbnN0IF9ERlVDID0gXCJEZWxldGVGdW5jdGlvblVybENvbmZpZ1wiO1xuY29uc3QgX0RGVUNSID0gXCJEZWxldGVGdW5jdGlvblVybENvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9ETEMgPSBcIkRlYWRMZXR0ZXJDb25maWdcIjtcbmNvbnN0IF9ETFYgPSBcIkRlbGV0ZUxheWVyVmVyc2lvblwiO1xuY29uc3QgX0RMVlIgPSBcIkRlbGV0ZUxheWVyVmVyc2lvblJlcXVlc3RcIjtcbmNvbnN0IF9ETiA9IFwiRGF0YWJhc2VOYW1lXCI7XG5jb25zdCBfRFBDQyA9IFwiRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ1wiO1xuY29uc3QgX0RQQ0NSID0gXCJEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX0RSID0gXCJEcnlSdW5cIjtcbmNvbnN0IF9EZSA9IFwiRGVzdGluYXRpb25cIjtcbmNvbnN0IF9FID0gXCJFbmFibGVkXCI7XG5jb25zdCBfRUMgPSBcIkVycm9yQ29kZVwiO1xuY29uc3QgX0VDQURFID0gXCJFQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb25cIjtcbmNvbnN0IF9FQ0VDID0gXCJFQzJFcnJvckNvZGVcIjtcbmNvbnN0IF9FQ1RFID0gXCJFQzJUaHJvdHRsZWRFeGNlcHRpb25cIjtcbmNvbnN0IF9FQ1VFID0gXCJFQzJVbmV4cGVjdGVkRXhjZXB0aW9uXCI7XG5jb25zdCBfRUQgPSBcIkVycm9yRGV0YWlsc1wiO1xuY29uc3QgX0VFID0gXCJFbnZpcm9ubWVudEVycm9yXCI7XG5jb25zdCBfRUZTSU9FID0gXCJFRlNJT0V4Y2VwdGlvblwiO1xuY29uc3QgX0VGU01DRSA9IFwiRUZTTW91bnRDb25uZWN0aXZpdHlFeGNlcHRpb25cIjtcbmNvbnN0IF9FRlNNRkUgPSBcIkVGU01vdW50RmFpbHVyZUV4Y2VwdGlvblwiO1xuY29uc3QgX0VGU01URSA9IFwiRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uXCI7XG5jb25zdCBfRUggPSBcIkV4cG9zZUhlYWRlcnNcIjtcbmNvbnN0IF9FTklMUkUgPSBcIkVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvblwiO1xuY29uc3QgX0VQID0gXCJFbnRyeVBvaW50XCI7XG5jb25zdCBfRVIgPSBcIkVudmlyb25tZW50UmVzcG9uc2VcIjtcbmNvbnN0IF9FUkYgPSBcIkV2ZW50UmVjb3JkRm9ybWF0XCI7XG5jb25zdCBfRVMgPSBcIkVwaGVtZXJhbFN0b3JhZ2VcIjtcbmNvbnN0IF9FU0EgPSBcIkV2ZW50U291cmNlQXJuXCI7XG5jb25zdCBfRVNNID0gXCJFdmVudFNvdXJjZU1hcHBpbmdzXCI7XG5jb25zdCBfRVNNQSA9IFwiRXZlbnRTb3VyY2VNYXBwaW5nQXJuXCI7XG5jb25zdCBfRVNNQyA9IFwiRXZlbnRTb3VyY2VNYXBwaW5nQ29uZmlndXJhdGlvblwiO1xuY29uc3QgX0VTTUwgPSBcIkV2ZW50U291cmNlTWFwcGluZ3NMaXN0XCI7XG5jb25zdCBfRVNNTUMgPSBcIkV2ZW50U291cmNlTWFwcGluZ01ldHJpY3NDb25maWdcIjtcbmNvbnN0IF9FU1QgPSBcIkV2ZW50U291cmNlVG9rZW5cIjtcbmNvbnN0IF9FU3YgPSBcIkV2ZW50U3RyZWFtXCI7XG5jb25zdCBfRVYgPSBcIkV4ZWN1dGVkVmVyc2lvblwiO1xuY29uc3QgX0VWTiA9IFwiRW52aXJvbm1lbnRWYXJpYWJsZU5hbWVcIjtcbmNvbnN0IF9FVlYgPSBcIkVudmlyb25tZW50VmFyaWFibGVWYWx1ZVwiO1xuY29uc3QgX0VWbiA9IFwiRW52aXJvbm1lbnRWYXJpYWJsZXNcIjtcbmNvbnN0IF9FbiA9IFwiRW52aXJvbm1lbnRcIjtcbmNvbnN0IF9FbmQgPSBcIkVuZHBvaW50c1wiO1xuY29uc3QgX0VyID0gXCJFcnJvclwiO1xuY29uc3QgX0YgPSBcIkZpbHRlclwiO1xuY29uc3QgX0ZBID0gXCJGdW5jdGlvbkFyblwiO1xuY29uc3QgX0ZBdSA9IFwiRnVuY3Rpb25Bcm5zXCI7XG5jb25zdCBfRkMgPSBcIkZ1bmN0aW9uQ291bnRcIjtcbmNvbnN0IF9GQ0UgPSBcIkZpbHRlckNyaXRlcmlhRXJyb3JcIjtcbmNvbnN0IF9GQ0wgPSBcIkZ1bmN0aW9uQ29kZUxvY2F0aW9uXCI7XG5jb25zdCBfRkNpID0gXCJGaWx0ZXJDcml0ZXJpYVwiO1xuY29uc3QgX0ZDdSA9IFwiRnVuY3Rpb25Db2RlXCI7XG5jb25zdCBfRkN1biA9IFwiRnVuY3Rpb25Db25maWd1cmF0aW9uXCI7XG5jb25zdCBfRkQgPSBcIkZ1bGxEb2N1bWVudFwiO1xuY29uc3QgX0ZFID0gXCJGdW5jdGlvbkVycm9yXCI7XG5jb25zdCBfRkVJQyA9IFwiRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ1wiO1xuY29uc3QgX0ZFSUNMID0gXCJGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnTGlzdFwiO1xuY29uc3QgX0ZFSUN1ID0gXCJGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc1wiO1xuY29uc3QgX0ZMID0gXCJGaWx0ZXJMaXN0XCI7XG5jb25zdCBfRkx1ID0gXCJGdW5jdGlvbkxpc3RcIjtcbmNvbnN0IF9GTiA9IFwiRnVuY3Rpb25OYW1lXCI7XG5jb25zdCBfRlJUID0gXCJGdW5jdGlvblJlc3BvbnNlVHlwZXNcIjtcbmNvbnN0IF9GU0MgPSBcIkZpbGVTeXN0ZW1Db25maWdzXCI7XG5jb25zdCBfRlNDTCA9IFwiRmlsZVN5c3RlbUNvbmZpZ0xpc3RcIjtcbmNvbnN0IF9GU0NpID0gXCJGaWxlU3lzdGVtQ29uZmlnXCI7XG5jb25zdCBfRlUgPSBcIkZ1bmN0aW9uVXJsXCI7XG5jb25zdCBfRlVBVCA9IFwiRnVuY3Rpb25VcmxBdXRoVHlwZVwiO1xuY29uc3QgX0ZVQyA9IFwiRnVuY3Rpb25VcmxDb25maWdcIjtcbmNvbnN0IF9GVUNMID0gXCJGdW5jdGlvblVybENvbmZpZ0xpc3RcIjtcbmNvbnN0IF9GVUN1ID0gXCJGdW5jdGlvblVybENvbmZpZ3NcIjtcbmNvbnN0IF9GViA9IFwiRnVuY3Rpb25WZXJzaW9uXCI7XG5jb25zdCBfRmkgPSBcIkZpbHRlcnNcIjtcbmNvbnN0IF9GdSA9IFwiRnVuY3Rpb25zXCI7XG5jb25zdCBfR0EgPSBcIkdldEFsaWFzXCI7XG5jb25zdCBfR0FSID0gXCJHZXRBbGlhc1JlcXVlc3RcIjtcbmNvbnN0IF9HQVMgPSBcIkdldEFjY291bnRTZXR0aW5nc1wiO1xuY29uc3QgX0dBU1IgPSBcIkdldEFjY291bnRTZXR0aW5nc1JlcXVlc3RcIjtcbmNvbnN0IF9HQVNSZSA9IFwiR2V0QWNjb3VudFNldHRpbmdzUmVzcG9uc2VcIjtcbmNvbnN0IF9HQ1NDID0gXCJHZXRDb2RlU2lnbmluZ0NvbmZpZ1wiO1xuY29uc3QgX0dDU0NSID0gXCJHZXRDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9HQ1NDUmUgPSBcIkdldENvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9HRVNNID0gXCJHZXRFdmVudFNvdXJjZU1hcHBpbmdcIjtcbmNvbnN0IF9HRVNNUiA9IFwiR2V0RXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdFwiO1xuY29uc3QgX0dGID0gXCJHZXRGdW5jdGlvblwiO1xuY29uc3QgX0dGQyA9IFwiR2V0RnVuY3Rpb25Db25jdXJyZW5jeVwiO1xuY29uc3QgX0dGQ1IgPSBcIkdldEZ1bmN0aW9uQ29uY3VycmVuY3lSZXF1ZXN0XCI7XG5jb25zdCBfR0ZDUmUgPSBcIkdldEZ1bmN0aW9uQ29uY3VycmVuY3lSZXNwb25zZVwiO1xuY29uc3QgX0dGQ1JldCA9IFwiR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uUmVxdWVzdFwiO1xuY29uc3QgX0dGQ1NDID0gXCJHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnXCI7XG5jb25zdCBfR0ZDU0NSID0gXCJHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX0dGQ1NDUmUgPSBcIkdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdSZXNwb25zZVwiO1xuY29uc3QgX0dGQ2UgPSBcIkdldEZ1bmN0aW9uQ29uZmlndXJhdGlvblwiO1xuY29uc3QgX0dGRUlDID0gXCJHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnXCI7XG5jb25zdCBfR0ZFSUNSID0gXCJHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX0dGUiA9IFwiR2V0RnVuY3Rpb25SZXF1ZXN0XCI7XG5jb25zdCBfR0ZSQyA9IFwiR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdcIjtcbmNvbnN0IF9HRlJDUiA9IFwiR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXF1ZXN0XCI7XG5jb25zdCBfR0ZSQ1JlID0gXCJHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfR0ZSZSA9IFwiR2V0RnVuY3Rpb25SZXNwb25zZVwiO1xuY29uc3QgX0dGVUMgPSBcIkdldEZ1bmN0aW9uVXJsQ29uZmlnXCI7XG5jb25zdCBfR0ZVQ1IgPSBcIkdldEZ1bmN0aW9uVXJsQ29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX0dGVUNSZSA9IFwiR2V0RnVuY3Rpb25VcmxDb25maWdSZXNwb25zZVwiO1xuY29uc3QgX0dMViA9IFwiR2V0TGF5ZXJWZXJzaW9uXCI7XG5jb25zdCBfR0xWQkEgPSBcIkdldExheWVyVmVyc2lvbkJ5QXJuXCI7XG5jb25zdCBfR0xWQkFSID0gXCJHZXRMYXllclZlcnNpb25CeUFyblJlcXVlc3RcIjtcbmNvbnN0IF9HTFZQID0gXCJHZXRMYXllclZlcnNpb25Qb2xpY3lcIjtcbmNvbnN0IF9HTFZQUiA9IFwiR2V0TGF5ZXJWZXJzaW9uUG9saWN5UmVxdWVzdFwiO1xuY29uc3QgX0dMVlBSZSA9IFwiR2V0TGF5ZXJWZXJzaW9uUG9saWN5UmVzcG9uc2VcIjtcbmNvbnN0IF9HTFZSID0gXCJHZXRMYXllclZlcnNpb25SZXF1ZXN0XCI7XG5jb25zdCBfR0xWUmUgPSBcIkdldExheWVyVmVyc2lvblJlc3BvbnNlXCI7XG5jb25zdCBfR1AgPSBcIkdldFBvbGljeVwiO1xuY29uc3QgX0dQQ0MgPSBcIkdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdcIjtcbmNvbnN0IF9HUENDUiA9IFwiR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9HUENDUmUgPSBcIkdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXNwb25zZVwiO1xuY29uc3QgX0dQUiA9IFwiR2V0UG9saWN5UmVxdWVzdFwiO1xuY29uc3QgX0dQUmUgPSBcIkdldFBvbGljeVJlc3BvbnNlXCI7XG5jb25zdCBfR1JNQyA9IFwiR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdcIjtcbmNvbnN0IF9HUk1DUiA9IFwiR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfR1JNQ1JlID0gXCJHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfSCA9IFwiSGFuZGxlclwiO1xuY29uc3QgX0kgPSBcIkludm9rZVwiO1xuY29uc3QgX0lBID0gXCJJbnZva2VBcmdzXCI7XG5jb25zdCBfSUFGRFMgPSBcIklwdjZBbGxvd2VkRm9yRHVhbFN0YWNrXCI7XG5jb25zdCBfSUFSID0gXCJJbnZva2VBc3luY1JlcXVlc3RcIjtcbmNvbnN0IF9JQVJuID0gXCJJbnZva2VBc3luY1Jlc3BvbnNlXCI7XG5jb25zdCBfSUFuID0gXCJJbnZva2VBc3luY1wiO1xuY29uc3QgX0lDID0gXCJJbWFnZUNvbmZpZ1wiO1xuY29uc3QgX0lDRSA9IFwiSW1hZ2VDb25maWdFcnJvclwiO1xuY29uc3QgX0lDUiA9IFwiSW1hZ2VDb25maWdSZXNwb25zZVwiO1xuY29uc3QgX0lDU0UgPSBcIkludmFsaWRDb2RlU2lnbmF0dXJlRXhjZXB0aW9uXCI7XG5jb25zdCBfSUNuID0gXCJJbnZva2VDb21wbGV0ZVwiO1xuY29uc3QgX0lNID0gXCJJbnZva2VNb2RlXCI7XG5jb25zdCBfSVBWRSA9IFwiSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uXCI7XG5jb25zdCBfSVIgPSBcIkludm9jYXRpb25SZXF1ZXN0XCI7XG5jb25zdCBfSVJDRSA9IFwiSW52YWxpZFJlcXVlc3RDb250ZW50RXhjZXB0aW9uXCI7XG5jb25zdCBfSVJFID0gXCJJbnZhbGlkUnVudGltZUV4Y2VwdGlvblwiO1xuY29uc3QgX0lSU1UgPSBcIkludm9rZVJlc3BvbnNlU3RyZWFtVXBkYXRlXCI7XG5jb25zdCBfSVJuID0gXCJJbnZvY2F0aW9uUmVzcG9uc2VcIjtcbmNvbnN0IF9JU0dJREUgPSBcIkludmFsaWRTZWN1cml0eUdyb3VwSURFeGNlcHRpb25cIjtcbmNvbnN0IF9JU0lERSA9IFwiSW52YWxpZFN1Ym5ldElERXhjZXB0aW9uXCI7XG5jb25zdCBfSVQgPSBcIkludm9jYXRpb25UeXBlXCI7XG5jb25zdCBfSVUgPSBcIkltYWdlVXJpXCI7XG5jb25zdCBfSVZGVSA9IFwiSW52b2tlZFZpYUZ1bmN0aW9uVXJsXCI7XG5jb25zdCBfSVdSUyA9IFwiSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtXCI7XG5jb25zdCBfSVdSU0NFID0gXCJJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21wbGV0ZUV2ZW50XCI7XG5jb25zdCBfSVdSU1IgPSBcIkludm9rZVdpdGhSZXNwb25zZVN0cmVhbVJlcXVlc3RcIjtcbmNvbnN0IF9JV1JTUkUgPSBcIkludm9rZVdpdGhSZXNwb25zZVN0cmVhbVJlc3BvbnNlRXZlbnRcIjtcbmNvbnN0IF9JV1JTUm4gPSBcIkludm9rZVdpdGhSZXNwb25zZVN0cmVhbVJlc3BvbnNlXCI7XG5jb25zdCBfSVpGRSA9IFwiSW52YWxpZFppcEZpbGVFeGNlcHRpb25cIjtcbmNvbnN0IF9LTVNBREUgPSBcIktNU0FjY2Vzc0RlbmllZEV4Y2VwdGlvblwiO1xuY29uc3QgX0tNU0RFID0gXCJLTVNEaXNhYmxlZEV4Y2VwdGlvblwiO1xuY29uc3QgX0tNU0lTRSA9IFwiS01TSW52YWxpZFN0YXRlRXhjZXB0aW9uXCI7XG5jb25zdCBfS01TS0EgPSBcIktNU0tleUFyblwiO1xuY29uc3QgX0tNU05GRSA9IFwiS01TTm90Rm91bmRFeGNlcHRpb25cIjtcbmNvbnN0IF9LU1JBQyA9IFwiS2Fma2FTY2hlbWFSZWdpc3RyeUFjY2Vzc0NvbmZpZ1wiO1xuY29uc3QgX0tTUkFDTCA9IFwiS2Fma2FTY2hlbWFSZWdpc3RyeUFjY2Vzc0NvbmZpZ0xpc3RcIjtcbmNvbnN0IF9LU1JDID0gXCJLYWZrYVNjaGVtYVJlZ2lzdHJ5Q29uZmlnXCI7XG5jb25zdCBfS1NWQyA9IFwiS2Fma2FTY2hlbWFWYWxpZGF0aW9uQ29uZmlnXCI7XG5jb25zdCBfS1NWQ0wgPSBcIkthZmthU2NoZW1hVmFsaWRhdGlvbkNvbmZpZ0xpc3RcIjtcbmNvbnN0IF9MID0gXCJMYXllcnNcIjtcbmNvbnN0IF9MQSA9IFwiTGF5ZXJBcm5cIjtcbmNvbnN0IF9MQVIgPSBcIkxpc3RBbGlhc2VzUmVxdWVzdFwiO1xuY29uc3QgX0xBUmkgPSBcIkxpc3RBbGlhc2VzUmVzcG9uc2VcIjtcbmNvbnN0IF9MQWkgPSBcIkxpc3RBbGlhc2VzXCI7XG5jb25zdCBfTEMgPSBcIkxvZ2dpbmdDb25maWdcIjtcbmNvbnN0IF9MQ1NDID0gXCJMaXN0Q29kZVNpZ25pbmdDb25maWdzXCI7XG5jb25zdCBfTENTQ1IgPSBcIkxpc3RDb2RlU2lnbmluZ0NvbmZpZ3NSZXF1ZXN0XCI7XG5jb25zdCBfTENTQ1JpID0gXCJMaXN0Q29kZVNpZ25pbmdDb25maWdzUmVzcG9uc2VcIjtcbmNvbnN0IF9MRVNNID0gXCJMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc1wiO1xuY29uc3QgX0xFU01SID0gXCJMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc1JlcXVlc3RcIjtcbmNvbnN0IF9MRVNNUmkgPSBcIkxpc3RFdmVudFNvdXJjZU1hcHBpbmdzUmVzcG9uc2VcIjtcbmNvbnN0IF9MRiA9IFwiTG9nRm9ybWF0XCI7XG5jb25zdCBfTEZCQ1NDID0gXCJMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ1wiO1xuY29uc3QgX0xGQkNTQ1IgPSBcIkxpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX0xGQkNTQ1JpID0gXCJMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfTEZFSUMgPSBcIkxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc1wiO1xuY29uc3QgX0xGRUlDUiA9IFwiTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzUmVxdWVzdFwiO1xuY29uc3QgX0xGRUlDUmkgPSBcIkxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc1Jlc3BvbnNlXCI7XG5jb25zdCBfTEZSID0gXCJMaXN0RnVuY3Rpb25zUmVxdWVzdFwiO1xuY29uc3QgX0xGUmkgPSBcIkxpc3RGdW5jdGlvbnNSZXNwb25zZVwiO1xuY29uc3QgX0xGVUMgPSBcIkxpc3RGdW5jdGlvblVybENvbmZpZ3NcIjtcbmNvbnN0IF9MRlVDUiA9IFwiTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc1JlcXVlc3RcIjtcbmNvbnN0IF9MRlVDUmkgPSBcIkxpc3RGdW5jdGlvblVybENvbmZpZ3NSZXNwb25zZVwiO1xuY29uc3QgX0xGaSA9IFwiTGlzdEZ1bmN0aW9uc1wiO1xuY29uc3QgX0xHID0gXCJMb2dHcm91cFwiO1xuY29uc3QgX0xJID0gXCJMaWNlbnNlSW5mb1wiO1xuY29uc3QgX0xMID0gXCJMYXllcnNMaXN0XCI7XG5jb25zdCBfTExJID0gXCJMYXllcnNMaXN0SXRlbVwiO1xuY29uc3QgX0xMUiA9IFwiTGlzdExheWVyc1JlcXVlc3RcIjtcbmNvbnN0IF9MTFJpID0gXCJMaXN0TGF5ZXJzUmVzcG9uc2VcIjtcbmNvbnN0IF9MTFYgPSBcIkxpc3RMYXllclZlcnNpb25zXCI7XG5jb25zdCBfTExWUiA9IFwiTGlzdExheWVyVmVyc2lvbnNSZXF1ZXN0XCI7XG5jb25zdCBfTExWUmkgPSBcIkxpc3RMYXllclZlcnNpb25zUmVzcG9uc2VcIjtcbmNvbnN0IF9MTGkgPSBcIkxpc3RMYXllcnNcIjtcbmNvbnN0IF9MTSA9IFwiTGFzdE1vZGlmaWVkXCI7XG5jb25zdCBfTE1QID0gXCJMb2NhbE1vdW50UGF0aFwiO1xuY29uc3QgX0xNVCA9IFwiTGFzdE1vZGlmaWVkVGltZVwiO1xuY29uc3QgX0xNViA9IFwiTGF0ZXN0TWF0Y2hpbmdWZXJzaW9uXCI7XG5jb25zdCBfTE4gPSBcIkxheWVyTmFtZVwiO1xuY29uc3QgX0xQQ0MgPSBcIkxpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc1wiO1xuY29uc3QgX0xQQ0NSID0gXCJMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NSZXF1ZXN0XCI7XG5jb25zdCBfTFBDQ1JpID0gXCJMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NSZXNwb25zZVwiO1xuY29uc3QgX0xQUiA9IFwiTGFzdFByb2Nlc3NpbmdSZXN1bHRcIjtcbmNvbnN0IF9MUiA9IFwiTG9nUmVzdWx0XCI7XG5jb25zdCBfTFJMID0gXCJMYXllcnNSZWZlcmVuY2VMaXN0XCI7XG5jb25zdCBfTFQgPSBcIkxvZ1R5cGVcIjtcbmNvbnN0IF9MVFIgPSBcIkxpc3RUYWdzUmVxdWVzdFwiO1xuY29uc3QgX0xUUmkgPSBcIkxpc3RUYWdzUmVzcG9uc2VcIjtcbmNvbnN0IF9MVGkgPSBcIkxpc3RUYWdzXCI7XG5jb25zdCBfTFVTID0gXCJMYXN0VXBkYXRlU3RhdHVzXCI7XG5jb25zdCBfTFVTUiA9IFwiTGFzdFVwZGF0ZVN0YXR1c1JlYXNvblwiO1xuY29uc3QgX0xVU1JDID0gXCJMYXN0VXBkYXRlU3RhdHVzUmVhc29uQ29kZVwiO1xuY29uc3QgX0xWID0gXCJMYXllclZlcnNpb25zXCI7XG5jb25zdCBfTFZBID0gXCJMYXllclZlcnNpb25Bcm5cIjtcbmNvbnN0IF9MVkJGID0gXCJMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uXCI7XG5jb25zdCBfTFZCRlIgPSBcIkxpc3RWZXJzaW9uc0J5RnVuY3Rpb25SZXF1ZXN0XCI7XG5jb25zdCBfTFZCRlJpID0gXCJMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uUmVzcG9uc2VcIjtcbmNvbnN0IF9MVkNJID0gXCJMYXllclZlcnNpb25Db250ZW50SW5wdXRcIjtcbmNvbnN0IF9MVkNPID0gXCJMYXllclZlcnNpb25Db250ZW50T3V0cHV0XCI7XG5jb25zdCBfTFZMID0gXCJMYXllclZlcnNpb25zTGlzdFwiO1xuY29uc3QgX0xWTEkgPSBcIkxheWVyVmVyc2lvbnNMaXN0SXRlbVwiO1xuY29uc3QgX0xhID0gXCJMYXllclwiO1xuY29uc3QgX0xvID0gXCJMb2NhdGlvblwiO1xuY29uc3QgX00gPSBcIk1lc3NhZ2VcIjtcbmNvbnN0IF9NQSA9IFwiTWF4QWdlXCI7XG5jb25zdCBfTUFhID0gXCJNYXN0ZXJBcm5cIjtcbmNvbnN0IF9NQldJUyA9IFwiTWF4aW11bUJhdGNoaW5nV2luZG93SW5TZWNvbmRzXCI7XG5jb25zdCBfTUMgPSBcIk1ldHJpY3NDb25maWdcIjtcbmNvbnN0IF9NQ2EgPSBcIk1heGltdW1Db25jdXJyZW5jeVwiO1xuY29uc3QgX01FQUlTID0gXCJNYXhpbXVtRXZlbnRBZ2VJblNlY29uZHNcIjtcbmNvbnN0IF9NSSA9IFwiTWF4SXRlbXNcIjtcbmNvbnN0IF9NUCA9IFwiTWluaW11bVBvbGxlcnNcIjtcbmNvbnN0IF9NUGEgPSBcIk1heGltdW1Qb2xsZXJzXCI7XG5jb25zdCBfTVIgPSBcIk1hc3RlclJlZ2lvblwiO1xuY29uc3QgX01SQSA9IFwiTWF4aW11bVJldHJ5QXR0ZW1wdHNcIjtcbmNvbnN0IF9NUkFJUyA9IFwiTWF4aW11bVJlY29yZEFnZUluU2Vjb25kc1wiO1xuY29uc3QgX01TID0gXCJNZW1vcnlTaXplXCI7XG5jb25zdCBfTWEgPSBcIk1hcmtlclwiO1xuY29uc3QgX01lID0gXCJNZXRyaWNzXCI7XG5jb25zdCBfTW8gPSBcIk1vZGVcIjtcbmNvbnN0IF9OID0gXCJOYW1lXCI7XG5jb25zdCBfTk0gPSBcIk5leHRNYXJrZXJcIjtcbmNvbnN0IF9PRiA9IFwiT25GYWlsdXJlXCI7XG5jb25zdCBfT0kgPSBcIk9yZ2FuaXphdGlvbklkXCI7XG5jb25zdCBfT1MgPSBcIk9uU3VjY2Vzc1wiO1xuY29uc3QgX09TcCA9IFwiT3B0aW1pemF0aW9uU3RhdHVzXCI7XG5jb25zdCBfUCA9IFwiUHJpbmNpcGFsXCI7XG5jb25zdCBfUEMgPSBcIlBheWxvYWRDaHVua1wiO1xuY29uc3QgX1BDQyA9IFwiUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NcIjtcbmNvbnN0IF9QQ0NMID0gXCJQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTGlzdFwiO1xuY29uc3QgX1BDQ0xJID0gXCJQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTGlzdEl0ZW1cIjtcbmNvbnN0IF9QQ0NORkUgPSBcIlByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvblwiO1xuY29uc3QgX1BDRSA9IFwiUHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9uc1wiO1xuY29uc3QgX1BGID0gXCJQYXJhbGxlbGl6YXRpb25GYWN0b3JcIjtcbmNvbnN0IF9QRkMgPSBcIlB1dEZ1bmN0aW9uQ29uY3VycmVuY3lcIjtcbmNvbnN0IF9QRkNSID0gXCJQdXRGdW5jdGlvbkNvbmN1cnJlbmN5UmVxdWVzdFwiO1xuY29uc3QgX1BGQ1NDID0gXCJQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnXCI7XG5jb25zdCBfUEZDU0NSID0gXCJQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdFwiO1xuY29uc3QgX1BGQ1NDUnUgPSBcIlB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdSZXNwb25zZVwiO1xuY29uc3QgX1BGRSA9IFwiUHJlY29uZGl0aW9uRmFpbGVkRXhjZXB0aW9uXCI7XG5jb25zdCBfUEZFSUMgPSBcIlB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdcIjtcbmNvbnN0IF9QRkVJQ1IgPSBcIlB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfUEZSQyA9IFwiUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdcIjtcbmNvbnN0IF9QRlJDUiA9IFwiUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXF1ZXN0XCI7XG5jb25zdCBfUEZSQ1J1ID0gXCJQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfUExFRSA9IFwiUG9saWN5TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb25cIjtcbmNvbnN0IF9QTFYgPSBcIlB1Ymxpc2hMYXllclZlcnNpb25cIjtcbmNvbnN0IF9QTFZSID0gXCJQdWJsaXNoTGF5ZXJWZXJzaW9uUmVxdWVzdFwiO1xuY29uc3QgX1BMVlJ1ID0gXCJQdWJsaXNoTGF5ZXJWZXJzaW9uUmVzcG9uc2VcIjtcbmNvbnN0IF9QT0lEID0gXCJQcmluY2lwYWxPcmdJRFwiO1xuY29uc3QgX1BQQyA9IFwiUHJvdmlzaW9uZWRQb2xsZXJDb25maWdcIjtcbmNvbnN0IF9QUENDID0gXCJQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnXCI7XG5jb25zdCBfUFBDQ1IgPSBcIlB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfUFBDQ1J1ID0gXCJQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9QUk1DID0gXCJQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ1wiO1xuY29uc3QgX1BSTUNSID0gXCJQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9QUk1DUnUgPSBcIlB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9QVCA9IFwiUGFja2FnZVR5cGVcIjtcbmNvbnN0IF9QViA9IFwiUHVibGlzaFZlcnNpb25cIjtcbmNvbnN0IF9QVlIgPSBcIlB1Ymxpc2hWZXJzaW9uUmVxdWVzdFwiO1xuY29uc3QgX1BhID0gXCJQYXR0ZXJuXCI7XG5jb25zdCBfUGF5ID0gXCJQYXlsb2FkXCI7XG5jb25zdCBfUG8gPSBcIlBvbGljeVwiO1xuY29uc3QgX1B1ID0gXCJQdWJsaXNoXCI7XG5jb25zdCBfUSA9IFwiUXVhbGlmaWVyXCI7XG5jb25zdCBfUXUgPSBcIlF1ZXVlc1wiO1xuY29uc3QgX1IgPSBcIlJ1bnRpbWVcIjtcbmNvbnN0IF9SQSA9IFwiUmV0cnktQWZ0ZXJcIjtcbmNvbnN0IF9SQyA9IFwiUm91dGluZ0NvbmZpZ1wiO1xuY29uc3QgX1JDRSA9IFwiUmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uc1wiO1xuY29uc3QgX1JDRWUgPSBcIlJlc291cmNlQ29uZmxpY3RFeGNlcHRpb25cIjtcbmNvbnN0IF9SSSA9IFwiUmV2aXNpb25JZFwiO1xuY29uc3QgX1JJRSA9IFwiUmVjdXJzaXZlSW52b2NhdGlvbkV4Y2VwdGlvblwiO1xuY29uc3QgX1JJVSA9IFwiUmVzb2x2ZWRJbWFnZVVyaVwiO1xuY29uc3QgX1JJVUUgPSBcIlJlc291cmNlSW5Vc2VFeGNlcHRpb25cIjtcbmNvbnN0IF9STCA9IFwiUmVjdXJzaXZlTG9vcFwiO1xuY29uc3QgX1JMVlAgPSBcIlJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25cIjtcbmNvbnN0IF9STFZQUiA9IFwiUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvblJlcXVlc3RcIjtcbmNvbnN0IF9STkZFID0gXCJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uXCI7XG5jb25zdCBfUk5SRSA9IFwiUmVzb3VyY2VOb3RSZWFkeUV4Y2VwdGlvblwiO1xuY29uc3QgX1JQID0gXCJSZW1vdmVQZXJtaXNzaW9uXCI7XG5jb25zdCBfUlBDRSA9IFwiUmVxdWVzdGVkUHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9uc1wiO1xuY29uc3QgX1JQUiA9IFwiUmVtb3ZlUGVybWlzc2lvblJlcXVlc3RcIjtcbmNvbnN0IF9SU0NUID0gXCJSZXNwb25zZVN0cmVhbUNvbnRlbnRUeXBlXCI7XG5jb25zdCBfUlQgPSBcIlJlcG9zaXRvcnlUeXBlXCI7XG5jb25zdCBfUlRMRSA9IFwiUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uXCI7XG5jb25zdCBfUlZBID0gXCJSdW50aW1lVmVyc2lvbkFyblwiO1xuY29uc3QgX1JWQyA9IFwiUnVudGltZVZlcnNpb25Db25maWdcIjtcbmNvbnN0IF9SVkUgPSBcIlJ1bnRpbWVWZXJzaW9uRXJyb3JcIjtcbmNvbnN0IF9SZSA9IFwiUmVzb3VyY2VcIjtcbmNvbnN0IF9SZWEgPSBcIlJlYXNvblwiO1xuY29uc3QgX1JvID0gXCJSb2xlXCI7XG5jb25zdCBfUyA9IFwiU3RhdGVtZW50XCI7XG5jb25zdCBfU0EgPSBcIlNvdXJjZUFyblwiO1xuY29uc3QgX1NBQyA9IFwiU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnNcIjtcbmNvbnN0IF9TQUNvID0gXCJTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uXCI7XG5jb25zdCBfU0FvID0gXCJTb3VyY2VBY2NvdW50XCI7XG5jb25zdCBfU0IgPSBcIlMzQnVja2V0XCI7XG5jb25zdCBfU0MgPSBcIlNjYWxpbmdDb25maWdcIjtcbmNvbnN0IF9TQ3QgPSBcIlN0YXR1c0NvZGVcIjtcbmNvbnN0IF9TRSA9IFwiU2VydmljZUV4Y2VwdGlvblwiO1xuY29uc3QgX1NHSSA9IFwiU2VjdXJpdHlHcm91cElkc1wiO1xuY29uc3QgX1NJID0gXCJTdGF0ZW1lbnRJZFwiO1xuY29uc3QgX1NJUEFMUkUgPSBcIlN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEV4Y2VwdGlvblwiO1xuY29uc3QgX1NJdSA9IFwiU3VibmV0SWRzXCI7XG5jb25zdCBfU0pBID0gXCJTaWduaW5nSm9iQXJuXCI7XG5jb25zdCBfU0sgPSBcIlMzS2V5XCI7XG5jb25zdCBfU0tNU0tBID0gXCJTb3VyY2VLTVNLZXlBcm5cIjtcbmNvbnN0IF9TTEwgPSBcIlN5c3RlbUxvZ0xldmVsXCI7XG5jb25zdCBfU01FUyA9IFwiU2VsZk1hbmFnZWRFdmVudFNvdXJjZVwiO1xuY29uc3QgX1NNS0VTQyA9IFwiU2VsZk1hbmFnZWRLYWZrYUV2ZW50U291cmNlQ29uZmlnXCI7XG5jb25zdCBfU09WID0gXCJTM09iamVjdFZlcnNpb25cIjtcbmNvbnN0IF9TUCA9IFwiU3RhcnRpbmdQb3NpdGlvblwiO1xuY29uc3QgX1NQVCA9IFwiU3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFwiO1xuY29uc3QgX1NQVkEgPSBcIlNpZ25pbmdQcm9maWxlVmVyc2lvbkFybnNcIjtcbmNvbnN0IF9TUFZBaSA9IFwiU2lnbmluZ1Byb2ZpbGVWZXJzaW9uQXJuXCI7XG5jb25zdCBfU1IgPSBcIlN0YXRlUmVhc29uXCI7XG5jb25zdCBfU1JDID0gXCJTY2hlbWFSZWdpc3RyeUNvbmZpZ1wiO1xuY29uc3QgX1NSQ3QgPSBcIlN0YXRlUmVhc29uQ29kZVwiO1xuY29uc3QgX1NSRVRMRSA9IFwiU2VyaWFsaXplZFJlcXVlc3RFbnRpdHlUb29MYXJnZUV4Y2VwdGlvblwiO1xuY29uc3QgX1NSVVJJID0gXCJTY2hlbWFSZWdpc3RyeVVSSVwiO1xuY29uc3QgX1NSdCA9IFwiU3RhdHVzUmVhc29uXCI7XG5jb25zdCBfU1MgPSBcIlNlbnNpdGl2ZVN0cmluZ1wiO1xuY29uc3QgX1NTRSA9IFwiU25hcFN0YXJ0RXhjZXB0aW9uXCI7XG5jb25zdCBfU1NOUkUgPSBcIlNuYXBTdGFydE5vdFJlYWR5RXhjZXB0aW9uXCI7XG5jb25zdCBfU1NSID0gXCJTbmFwU3RhcnRSZXNwb25zZVwiO1xuY29uc3QgX1NTVEUgPSBcIlNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb25cIjtcbmNvbnN0IF9TU24gPSBcIlNuYXBTdGFydFwiO1xuY29uc3QgX1NUUiA9IFwiU3RhdGVUcmFuc2l0aW9uUmVhc29uXCI7XG5jb25zdCBfU1ZDID0gXCJTY2hlbWFWYWxpZGF0aW9uQ29uZmlnc1wiO1xuY29uc3QgX1NpID0gXCJTaXplXCI7XG5jb25zdCBfU3QgPSBcIlN0YXRlXCI7XG5jb25zdCBfU3RhID0gXCJTdGF0dXNcIjtcbmNvbnN0IF9UID0gXCJUeXBlXCI7XG5jb25zdCBfVEEgPSBcIlRhcmdldEFyblwiO1xuY29uc3QgX1RDID0gXCJUcmFjaW5nQ29uZmlnXCI7XG5jb25zdCBfVENSID0gXCJUcmFjaW5nQ29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9UQ1MgPSBcIlRvdGFsQ29kZVNpemVcIjtcbmNvbnN0IF9UQ2UgPSBcIlRlbmFuY3lDb25maWdcIjtcbmNvbnN0IF9URSA9IFwiVGFnc0Vycm9yXCI7XG5jb25zdCBfVEkgPSBcIlRlbmFudElkXCI7XG5jb25zdCBfVElNID0gXCJUZW5hbnRJc29sYXRpb25Nb2RlXCI7XG5jb25zdCBfVEsgPSBcIlRhZ0tleXNcIjtcbmNvbnN0IF9UTVJFID0gXCJUb29NYW55UmVxdWVzdHNFeGNlcHRpb25cIjtcbmNvbnN0IF9UUiA9IFwiVGFnUmVzb3VyY2VcIjtcbmNvbnN0IF9UUlIgPSBcIlRhZ1Jlc291cmNlUmVxdWVzdFwiO1xuY29uc3QgX1RXSVMgPSBcIlR1bWJsaW5nV2luZG93SW5TZWNvbmRzXCI7XG5jb25zdCBfVGEgPSBcIlRhZ3NcIjtcbmNvbnN0IF9UaSA9IFwiVGltZW91dFwiO1xuY29uc3QgX1RvID0gXCJUb3BpY3NcIjtcbmNvbnN0IF9VQSA9IFwiVXBkYXRlQWxpYXNcIjtcbmNvbnN0IF9VQU9EID0gXCJVbnRydXN0ZWRBcnRpZmFjdE9uRGVwbG95bWVudFwiO1xuY29uc3QgX1VBUiA9IFwiVXBkYXRlQWxpYXNSZXF1ZXN0XCI7XG5jb25zdCBfVUNFID0gXCJVbnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnNcIjtcbmNvbnN0IF9VQ1NDID0gXCJVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ1wiO1xuY29uc3QgX1VDU0NSID0gXCJVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3RcIjtcbmNvbnN0IF9VQ1NDUnAgPSBcIlVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2VcIjtcbmNvbnN0IF9VRVNNID0gXCJVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdcIjtcbmNvbnN0IF9VRVNNUiA9IFwiVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdFwiO1xuY29uc3QgX1VGQyA9IFwiVXBkYXRlRnVuY3Rpb25Db2RlXCI7XG5jb25zdCBfVUZDUiA9IFwiVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdFwiO1xuY29uc3QgX1VGQ1JwID0gXCJVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25SZXF1ZXN0XCI7XG5jb25zdCBfVUZDcCA9IFwiVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uXCI7XG5jb25zdCBfVUZFSUMgPSBcIlVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdcIjtcbmNvbnN0IF9VRkVJQ1IgPSBcIlVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfVUZVQyA9IFwiVXBkYXRlRnVuY3Rpb25VcmxDb25maWdcIjtcbmNvbnN0IF9VRlVDUiA9IFwiVXBkYXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0XCI7XG5jb25zdCBfVUZVQ1JwID0gXCJVcGRhdGVGdW5jdGlvblVybENvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfVU1URSA9IFwiVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb25cIjtcbmNvbnN0IF9VUiA9IFwiVW50YWdSZXNvdXJjZVwiO1xuY29uc3QgX1VSSSA9IFwiVVJJXCI7XG5jb25zdCBfVVJPID0gXCJVcGRhdGVSdW50aW1lT25cIjtcbmNvbnN0IF9VUlIgPSBcIlVudGFnUmVzb3VyY2VSZXF1ZXN0XCI7XG5jb25zdCBfVVVJRCA9IFwiVVVJRFwiO1xuY29uc3QgX1YgPSBcIlZhcmlhYmxlc1wiO1xuY29uc3QgX1ZDID0gXCJWcGNDb25maWdcIjtcbmNvbnN0IF9WQ1IgPSBcIlZwY0NvbmZpZ1Jlc3BvbnNlXCI7XG5jb25zdCBfVkkgPSBcIlZwY0lkXCI7XG5jb25zdCBfVk4gPSBcIlZlcnNpb25OdW1iZXJcIjtcbmNvbnN0IF9WZSA9IFwiVmVyc2lvblwiO1xuY29uc3QgX1ZlciA9IFwiVmVyc2lvbnNcIjtcbmNvbnN0IF9XRCA9IFwiV29ya2luZ0RpcmVjdG9yeVwiO1xuY29uc3QgX1hBQ0MgPSBcIlgtQW16LUNsaWVudC1Db250ZXh0XCI7XG5jb25zdCBfWEFFViA9IFwiWC1BbXotRXhlY3V0ZWQtVmVyc2lvblwiO1xuY29uc3QgX1hBRkUgPSBcIlgtQW16LUZ1bmN0aW9uLUVycm9yXCI7XG5jb25zdCBfWEFJVCA9IFwiWC1BbXotSW52b2NhdGlvbi1UeXBlXCI7XG5jb25zdCBfWEFMUiA9IFwiWC1BbXotTG9nLVJlc3VsdFwiO1xuY29uc3QgX1hBTFQgPSBcIlgtQW16LUxvZy1UeXBlXCI7XG5jb25zdCBfWEFUSSA9IFwiWC1BbXotVGVuYW50LUlkXCI7XG5jb25zdCBfWkYgPSBcIlppcEZpbGVcIjtcbmNvbnN0IF9jID0gXCJjbGllbnRcIjtcbmNvbnN0IF9lID0gXCJlcnJvclwiO1xuY29uc3QgX2VQID0gXCJldmVudFBheWxvYWRcIjtcbmNvbnN0IF9oID0gXCJodHRwXCI7XG5jb25zdCBfaEUgPSBcImh0dHBFcnJvclwiO1xuY29uc3QgX2hIID0gXCJodHRwSGVhZGVyXCI7XG5jb25zdCBfaFEgPSBcImh0dHBRdWVyeVwiO1xuY29uc3QgX20gPSBcIm1lc3NhZ2VcIjtcbmNvbnN0IF9yQVMgPSBcInJldHJ5QWZ0ZXJTZWNvbmRzXCI7XG5jb25zdCBfcyA9IFwic3RyZWFtaW5nXCI7XG5jb25zdCBfc2UgPSBcInNlcnZlclwiO1xuY29uc3QgX3NtID0gXCJzbWl0aHkudHMuc2RrLnN5bnRoZXRpYy5jb20uYW1hem9uYXdzLmxhbWJkYVwiO1xuY29uc3QgX3RLID0gXCJ0YWdLZXlzXCI7XG5jb25zdCBuMCA9IFwiY29tLmFtYXpvbmF3cy5sYW1iZGFcIjtcbnZhciBfQmxvYiA9IFswLCBuMCwgX0IsIDgsIDIxXTtcbnZhciBCbG9iU3RyZWFtID0gW1xuICAgIDAsXG4gICAgbjAsXG4gICAgX0JTLFxuICAgIHtcbiAgICAgICAgW19zXTogMSxcbiAgICB9LFxuICAgIDQyLFxuXTtcbnZhciBFbnZpcm9ubWVudFZhcmlhYmxlTmFtZSA9IFswLCBuMCwgX0VWTiwgOCwgMF07XG52YXIgRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlID0gWzAsIG4wLCBfRVZWLCA4LCAwXTtcbnZhciBTZW5zaXRpdmVTdHJpbmcgPSBbMCwgbjAsIF9TUywgOCwgMF07XG52YXIgQWNjb3VudExpbWl0ID0gWzMsIG4wLCBfQUwsIDAsIFtfVENTLCBfQ1NVLCBfQ1NaLCBfQ0UsIF9VQ0VdLCBbMSwgMSwgMSwgMSwgMV1dO1xudmFyIEFjY291bnRVc2FnZSA9IFszLCBuMCwgX0FVLCAwLCBbX1RDUywgX0ZDXSwgWzEsIDFdXTtcbnZhciBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9BTFZQUixcbiAgICAwLFxuICAgIFtfTE4sIF9WTiwgX1NJLCBfQSwgX1AsIF9PSSwgX1JJXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgWzEsIDFdLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUkksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25SZXNwb25zZSA9IFszLCBuMCwgX0FMVlBSZCwgMCwgW19TLCBfUkldLCBbMCwgMF1dO1xudmFyIEFkZFBlcm1pc3Npb25SZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0FQUixcbiAgICAwLFxuICAgIFtfRk4sIF9TSSwgX0EsIF9QLCBfU0EsIF9TQW8sIF9FU1QsIF9RLCBfUkksIF9QT0lELCBfRlVBVCwgX0lWRlVdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDIsXG4gICAgXSxcbl07XG52YXIgQWRkUGVybWlzc2lvblJlc3BvbnNlID0gWzMsIG4wLCBfQVBSZCwgMCwgW19TXSwgWzBdXTtcbnZhciBBbGlhc0NvbmZpZ3VyYXRpb24gPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfQUMsXG4gICAgMCxcbiAgICBbX0FBLCBfTiwgX0ZWLCBfRCwgX1JDLCBfUkldLFxuICAgIFswLCAwLCAwLCAwLCAoKSA9PiBBbGlhc1JvdXRpbmdDb25maWd1cmF0aW9uLCAwXSxcbl07XG52YXIgQWxpYXNSb3V0aW5nQ29uZmlndXJhdGlvbiA9IFszLCBuMCwgX0FSQywgMCwgW19BVlddLCBbMTI4IHwgMV1dO1xudmFyIEFsbG93ZWRQdWJsaXNoZXJzID0gWzMsIG4wLCBfQVAsIDAsIFtfU1BWQV0sIFs2NCB8IDBdXTtcbnZhciBBbWF6b25NYW5hZ2VkS2Fma2FFdmVudFNvdXJjZUNvbmZpZyA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9BTUtFU0MsXG4gICAgMCxcbiAgICBbX0NHSSwgX1NSQ10sXG4gICAgWzAsICgpID0+IEthZmthU2NoZW1hUmVnaXN0cnlDb25maWddLFxuXTtcbnZhciBDb2RlU2lnbmluZ0NvbmZpZyA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9DU0MsXG4gICAgMCxcbiAgICBbX0NTQ0ksIF9DU0NBLCBfRCwgX0FQLCBfQ1NQLCBfTE1dLFxuICAgIFswLCAwLCAwLCAoKSA9PiBBbGxvd2VkUHVibGlzaGVycywgKCkgPT4gQ29kZVNpZ25pbmdQb2xpY2llcywgMF0sXG5dO1xudmFyIENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0NTQ05GRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDA0LFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb24sIENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb24kMSk7XG52YXIgQ29kZVNpZ25pbmdQb2xpY2llcyA9IFszLCBuMCwgX0NTUCwgMCwgW19VQU9EXSwgWzBdXTtcbnZhciBDb2RlU3RvcmFnZUV4Y2VlZGVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9DU0VFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDAsXG4gICAgfSxcbiAgICBbX1QsIF9tXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoQ29kZVN0b3JhZ2VFeGNlZWRlZEV4Y2VwdGlvbiwgQ29kZVN0b3JhZ2VFeGNlZWRlZEV4Y2VwdGlvbiQxKTtcbnZhciBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9DVkZFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDAsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEV4Y2VwdGlvbiwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEV4Y2VwdGlvbiQxKTtcbnZhciBDb25jdXJyZW5jeSA9IFszLCBuMCwgX0MsIDAsIFtfUkNFXSwgWzFdXTtcbnZhciBDb3JzID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NvLFxuICAgIDAsXG4gICAgW19BQ2wsIF9BSCwgX0FNLCBfQU8sIF9FSCwgX01BXSxcbiAgICBbMiwgNjQgfCAwLCA2NCB8IDAsIDY0IHwgMCwgNjQgfCAwLCAxXSxcbl07XG52YXIgQ3JlYXRlQWxpYXNSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NBUixcbiAgICAwLFxuICAgIFtfRk4sIF9OLCBfRlYsIF9ELCBfUkNdLFxuICAgIFtbMCwgMV0sIDAsIDAsIDAsICgpID0+IEFsaWFzUm91dGluZ0NvbmZpZ3VyYXRpb25dLFxuXTtcbnZhciBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfQ0NTQ1IsXG4gICAgMCxcbiAgICBbX0QsIF9BUCwgX0NTUCwgX1RhXSxcbiAgICBbMCwgKCkgPT4gQWxsb3dlZFB1Ymxpc2hlcnMsICgpID0+IENvZGVTaWduaW5nUG9saWNpZXMsIDEyOCB8IDBdLFxuXTtcbnZhciBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NDU0NScixcbiAgICAwLFxuICAgIFtfQ1NDXSxcbiAgICBbKCkgPT4gQ29kZVNpZ25pbmdDb25maWddLFxuXTtcbnZhciBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NFU01SLFxuICAgIDAsXG4gICAgW1xuICAgICAgICBfRVNBLFxuICAgICAgICBfRk4sXG4gICAgICAgIF9FLFxuICAgICAgICBfQlNhLFxuICAgICAgICBfRkNpLFxuICAgICAgICBfTUJXSVMsXG4gICAgICAgIF9QRixcbiAgICAgICAgX1NQLFxuICAgICAgICBfU1BULFxuICAgICAgICBfREMsXG4gICAgICAgIF9NUkFJUyxcbiAgICAgICAgX0JCT0ZFLFxuICAgICAgICBfTVJBLFxuICAgICAgICBfVGEsXG4gICAgICAgIF9UV0lTLFxuICAgICAgICBfVG8sXG4gICAgICAgIF9RdSxcbiAgICAgICAgX1NBQyxcbiAgICAgICAgX1NNRVMsXG4gICAgICAgIF9GUlQsXG4gICAgICAgIF9BTUtFU0MsXG4gICAgICAgIF9TTUtFU0MsXG4gICAgICAgIF9TQyxcbiAgICAgICAgX0REQkVTQyxcbiAgICAgICAgX0tNU0tBLFxuICAgICAgICBfTUMsXG4gICAgICAgIF9QUEMsXG4gICAgXSxcbiAgICBbXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDIsXG4gICAgICAgIDEsXG4gICAgICAgICgpID0+IEZpbHRlckNyaXRlcmlhLFxuICAgICAgICAxLFxuICAgICAgICAxLFxuICAgICAgICAwLFxuICAgICAgICA0LFxuICAgICAgICAoKSA9PiBEZXN0aW5hdGlvbkNvbmZpZyxcbiAgICAgICAgMSxcbiAgICAgICAgMixcbiAgICAgICAgMSxcbiAgICAgICAgMTI4IHwgMCxcbiAgICAgICAgMSxcbiAgICAgICAgNjQgfCAwLFxuICAgICAgICA2NCB8IDAsXG4gICAgICAgICgpID0+IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zLFxuICAgICAgICAoKSA9PiBTZWxmTWFuYWdlZEV2ZW50U291cmNlLFxuICAgICAgICA2NCB8IDAsXG4gICAgICAgICgpID0+IEFtYXpvbk1hbmFnZWRLYWZrYUV2ZW50U291cmNlQ29uZmlnLFxuICAgICAgICAoKSA9PiBTZWxmTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWcsXG4gICAgICAgICgpID0+IFNjYWxpbmdDb25maWcsXG4gICAgICAgICgpID0+IERvY3VtZW50REJFdmVudFNvdXJjZUNvbmZpZyxcbiAgICAgICAgMCxcbiAgICAgICAgKCkgPT4gRXZlbnRTb3VyY2VNYXBwaW5nTWV0cmljc0NvbmZpZyxcbiAgICAgICAgKCkgPT4gUHJvdmlzaW9uZWRQb2xsZXJDb25maWcsXG4gICAgXSxcbl07XG52YXIgQ3JlYXRlRnVuY3Rpb25SZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NGUixcbiAgICAwLFxuICAgIFtcbiAgICAgICAgX0ZOLFxuICAgICAgICBfUixcbiAgICAgICAgX1JvLFxuICAgICAgICBfSCxcbiAgICAgICAgX0NvZCxcbiAgICAgICAgX0QsXG4gICAgICAgIF9UaSxcbiAgICAgICAgX01TLFxuICAgICAgICBfUHUsXG4gICAgICAgIF9WQyxcbiAgICAgICAgX1BULFxuICAgICAgICBfRExDLFxuICAgICAgICBfRW4sXG4gICAgICAgIF9LTVNLQSxcbiAgICAgICAgX1RDLFxuICAgICAgICBfVGEsXG4gICAgICAgIF9MLFxuICAgICAgICBfRlNDLFxuICAgICAgICBfSUMsXG4gICAgICAgIF9DU0NBLFxuICAgICAgICBfQXIsXG4gICAgICAgIF9FUyxcbiAgICAgICAgX1NTbixcbiAgICAgICAgX0xDLFxuICAgICAgICBfVENlLFxuICAgIF0sXG4gICAgW1xuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICBbKCkgPT4gRnVuY3Rpb25Db2RlLCAwXSxcbiAgICAgICAgMCxcbiAgICAgICAgMSxcbiAgICAgICAgMSxcbiAgICAgICAgMixcbiAgICAgICAgKCkgPT4gVnBjQ29uZmlnLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBEZWFkTGV0dGVyQ29uZmlnLFxuICAgICAgICBbKCkgPT4gRW52aXJvbm1lbnQsIDBdLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBUcmFjaW5nQ29uZmlnLFxuICAgICAgICAxMjggfCAwLFxuICAgICAgICA2NCB8IDAsXG4gICAgICAgICgpID0+IEZpbGVTeXN0ZW1Db25maWdMaXN0LFxuICAgICAgICAoKSA9PiBJbWFnZUNvbmZpZyxcbiAgICAgICAgMCxcbiAgICAgICAgNjQgfCAwLFxuICAgICAgICAoKSA9PiBFcGhlbWVyYWxTdG9yYWdlLFxuICAgICAgICAoKSA9PiBTbmFwU3RhcnQsXG4gICAgICAgICgpID0+IExvZ2dpbmdDb25maWcsXG4gICAgICAgICgpID0+IFRlbmFuY3lDb25maWcsXG4gICAgXSxcbl07XG52YXIgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0NGVUNSLFxuICAgIDAsXG4gICAgW19GTiwgX1EsIF9BVCwgX0NvLCBfSU1dLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IENvcnMsXG4gICAgICAgIDAsXG4gICAgXSxcbl07XG52YXIgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdSZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9DRlVDUnIsXG4gICAgMCxcbiAgICBbX0ZVLCBfRkEsIF9BVCwgX0NvLCBfQ1QsIF9JTV0sXG4gICAgWzAsIDAsIDAsICgpID0+IENvcnMsIDAsIDBdLFxuXTtcbnZhciBEZWFkTGV0dGVyQ29uZmlnID0gWzMsIG4wLCBfRExDLCAwLCBbX1RBXSwgWzBdXTtcbnZhciBEZWxldGVBbGlhc1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfREFSLFxuICAgIDAsXG4gICAgW19GTiwgX05dLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbMCwgMV0sXG4gICAgXSxcbl07XG52YXIgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0ID0gWzMsIG4wLCBfRENTQ1IsIDAsIFtfQ1NDQV0sIFtbMCwgMV1dXTtcbnZhciBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlID0gWzMsIG4wLCBfRENTQ1JlLCAwLCBbXSwgW11dO1xudmFyIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ1JlcXVlc3QgPSBbMywgbjAsIF9ERVNNUiwgMCwgW19VVUlEXSwgW1swLCAxXV1dO1xudmFyIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0ID0gWzMsIG4wLCBfREZDU0NSLCAwLCBbX0ZOXSwgW1swLCAxXV1dO1xudmFyIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lSZXF1ZXN0ID0gWzMsIG4wLCBfREZDUiwgMCwgW19GTl0sIFtbMCwgMV1dXTtcbnZhciBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9ERkVJQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfUV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9RLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBEZWxldGVGdW5jdGlvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfREZSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0RGVUNSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgRGVsZXRlTGF5ZXJWZXJzaW9uUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9ETFZSLFxuICAgIDAsXG4gICAgW19MTiwgX1ZOXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgWzEsIDFdLFxuICAgIF0sXG5dO1xudmFyIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0RQQ0NSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgRGVzdGluYXRpb25Db25maWcgPSBbMywgbjAsIF9EQywgMCwgW19PUywgX09GXSwgWygpID0+IE9uU3VjY2VzcywgKCkgPT4gT25GYWlsdXJlXV07XG52YXIgRG9jdW1lbnREQkV2ZW50U291cmNlQ29uZmlnID0gWzMsIG4wLCBfRERCRVNDLCAwLCBbX0ROLCBfQ04sIF9GRF0sIFswLCAwLCAwXV07XG52YXIgRUMyQWNjZXNzRGVuaWVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9FQ0FERSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMixcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihFQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb24sIEVDMkFjY2Vzc0RlbmllZEV4Y2VwdGlvbiQxKTtcbnZhciBFQzJUaHJvdHRsZWRFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0VDVEUsXG4gICAge1xuICAgICAgICBbX2VdOiBfc2UsXG4gICAgICAgIFtfaEVdOiA1MDIsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoRUMyVGhyb3R0bGVkRXhjZXB0aW9uLCBFQzJUaHJvdHRsZWRFeGNlcHRpb24kMSk7XG52YXIgRUMyVW5leHBlY3RlZEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfRUNVRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMixcbiAgICB9LFxuICAgIFtfVCwgX00sIF9FQ0VDXSxcbiAgICBbMCwgMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoRUMyVW5leHBlY3RlZEV4Y2VwdGlvbiwgRUMyVW5leHBlY3RlZEV4Y2VwdGlvbiQxKTtcbnZhciBFRlNJT0V4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfRUZTSU9FLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MTAsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoRUZTSU9FeGNlcHRpb24sIEVGU0lPRXhjZXB0aW9uJDEpO1xudmFyIEVGU01vdW50Q29ubmVjdGl2aXR5RXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9FRlNNQ0UsXG4gICAge1xuICAgICAgICBbX2VdOiBfYyxcbiAgICAgICAgW19oRV06IDQwOCxcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihFRlNNb3VudENvbm5lY3Rpdml0eUV4Y2VwdGlvbiwgRUZTTW91bnRDb25uZWN0aXZpdHlFeGNlcHRpb24kMSk7XG52YXIgRUZTTW91bnRGYWlsdXJlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9FRlNNRkUsXG4gICAge1xuICAgICAgICBbX2VdOiBfYyxcbiAgICAgICAgW19oRV06IDQwMyxcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihFRlNNb3VudEZhaWx1cmVFeGNlcHRpb24sIEVGU01vdW50RmFpbHVyZUV4Y2VwdGlvbiQxKTtcbnZhciBFRlNNb3VudFRpbWVvdXRFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0VGU01URSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDA4LFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEVGU01vdW50VGltZW91dEV4Y2VwdGlvbiwgRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uJDEpO1xudmFyIEVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfRU5JTFJFLFxuICAgIHtcbiAgICAgICAgW19lXTogX3NlLFxuICAgICAgICBbX2hFXTogNTAyLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbiwgRU5JTGltaXRSZWFjaGVkRXhjZXB0aW9uJDEpO1xudmFyIEVudmlyb25tZW50ID0gWzMsIG4wLCBfRW4sIDAsIFtfVl0sIFtbKCkgPT4gRW52aXJvbm1lbnRWYXJpYWJsZXMsIDBdXV07XG52YXIgRW52aXJvbm1lbnRFcnJvciA9IFszLCBuMCwgX0VFLCAwLCBbX0VDLCBfTV0sIFswLCBbKCkgPT4gU2Vuc2l0aXZlU3RyaW5nLCAwXV1dO1xudmFyIEVudmlyb25tZW50UmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfRVIsXG4gICAgMCxcbiAgICBbX1YsIF9Fcl0sXG4gICAgW1xuICAgICAgICBbKCkgPT4gRW52aXJvbm1lbnRWYXJpYWJsZXMsIDBdLFxuICAgICAgICBbKCkgPT4gRW52aXJvbm1lbnRFcnJvciwgMF0sXG4gICAgXSxcbl07XG52YXIgRXBoZW1lcmFsU3RvcmFnZSA9IFszLCBuMCwgX0VTLCAwLCBbX1NpXSwgWzFdXTtcbnZhciBFdmVudFNvdXJjZU1hcHBpbmdDb25maWd1cmF0aW9uID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0VTTUMsXG4gICAgMCxcbiAgICBbXG4gICAgICAgIF9VVUlELFxuICAgICAgICBfU1AsXG4gICAgICAgIF9TUFQsXG4gICAgICAgIF9CU2EsXG4gICAgICAgIF9NQldJUyxcbiAgICAgICAgX1BGLFxuICAgICAgICBfRVNBLFxuICAgICAgICBfRkNpLFxuICAgICAgICBfRkEsXG4gICAgICAgIF9MTSxcbiAgICAgICAgX0xQUixcbiAgICAgICAgX1N0LFxuICAgICAgICBfU1RSLFxuICAgICAgICBfREMsXG4gICAgICAgIF9UbyxcbiAgICAgICAgX1F1LFxuICAgICAgICBfU0FDLFxuICAgICAgICBfU01FUyxcbiAgICAgICAgX01SQUlTLFxuICAgICAgICBfQkJPRkUsXG4gICAgICAgIF9NUkEsXG4gICAgICAgIF9UV0lTLFxuICAgICAgICBfRlJULFxuICAgICAgICBfQU1LRVNDLFxuICAgICAgICBfU01LRVNDLFxuICAgICAgICBfU0MsXG4gICAgICAgIF9EREJFU0MsXG4gICAgICAgIF9LTVNLQSxcbiAgICAgICAgX0ZDRSxcbiAgICAgICAgX0VTTUEsXG4gICAgICAgIF9NQyxcbiAgICAgICAgX1BQQyxcbiAgICBdLFxuICAgIFtcbiAgICAgICAgMCxcbiAgICAgICAgMCxcbiAgICAgICAgNCxcbiAgICAgICAgMSxcbiAgICAgICAgMSxcbiAgICAgICAgMSxcbiAgICAgICAgMCxcbiAgICAgICAgKCkgPT4gRmlsdGVyQ3JpdGVyaWEsXG4gICAgICAgIDAsXG4gICAgICAgIDQsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IERlc3RpbmF0aW9uQ29uZmlnLFxuICAgICAgICA2NCB8IDAsXG4gICAgICAgIDY0IHwgMCxcbiAgICAgICAgKCkgPT4gU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnMsXG4gICAgICAgICgpID0+IFNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UsXG4gICAgICAgIDEsXG4gICAgICAgIDIsXG4gICAgICAgIDEsXG4gICAgICAgIDEsXG4gICAgICAgIDY0IHwgMCxcbiAgICAgICAgKCkgPT4gQW1hem9uTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWcsXG4gICAgICAgICgpID0+IFNlbGZNYW5hZ2VkS2Fma2FFdmVudFNvdXJjZUNvbmZpZyxcbiAgICAgICAgKCkgPT4gU2NhbGluZ0NvbmZpZyxcbiAgICAgICAgKCkgPT4gRG9jdW1lbnREQkV2ZW50U291cmNlQ29uZmlnLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBGaWx0ZXJDcml0ZXJpYUVycm9yLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBFdmVudFNvdXJjZU1hcHBpbmdNZXRyaWNzQ29uZmlnLFxuICAgICAgICAoKSA9PiBQcm92aXNpb25lZFBvbGxlckNvbmZpZyxcbiAgICBdLFxuXTtcbnZhciBFdmVudFNvdXJjZU1hcHBpbmdNZXRyaWNzQ29uZmlnID0gWzMsIG4wLCBfRVNNTUMsIDAsIFtfTWVdLCBbNjQgfCAwXV07XG52YXIgRmlsZVN5c3RlbUNvbmZpZyA9IFszLCBuMCwgX0ZTQ2ksIDAsIFtfQXJuLCBfTE1QXSwgWzAsIDBdXTtcbnZhciBGaWx0ZXIgPSBbMywgbjAsIF9GLCAwLCBbX1BhXSwgWzBdXTtcbnZhciBGaWx0ZXJDcml0ZXJpYSA9IFszLCBuMCwgX0ZDaSwgMCwgW19GaV0sIFsoKSA9PiBGaWx0ZXJMaXN0XV07XG52YXIgRmlsdGVyQ3JpdGVyaWFFcnJvciA9IFszLCBuMCwgX0ZDRSwgMCwgW19FQywgX01dLCBbMCwgMF1dO1xudmFyIEZ1bmN0aW9uQ29kZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9GQ3UsXG4gICAgMCxcbiAgICBbX1pGLCBfU0IsIF9TSywgX1NPViwgX0lVLCBfU0tNU0tBXSxcbiAgICBbWygpID0+IF9CbG9iLCAwXSwgMCwgMCwgMCwgMCwgMF0sXG5dO1xudmFyIEZ1bmN0aW9uQ29kZUxvY2F0aW9uID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0ZDTCxcbiAgICAwLFxuICAgIFtfUlQsIF9MbywgX0lVLCBfUklVLCBfU0tNU0tBXSxcbiAgICBbMCwgMCwgMCwgMCwgMF0sXG5dO1xudmFyIEZ1bmN0aW9uQ29uZmlndXJhdGlvbiA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9GQ3VuLFxuICAgIDAsXG4gICAgW1xuICAgICAgICBfRk4sXG4gICAgICAgIF9GQSxcbiAgICAgICAgX1IsXG4gICAgICAgIF9SbyxcbiAgICAgICAgX0gsXG4gICAgICAgIF9DUyxcbiAgICAgICAgX0QsXG4gICAgICAgIF9UaSxcbiAgICAgICAgX01TLFxuICAgICAgICBfTE0sXG4gICAgICAgIF9DU28sXG4gICAgICAgIF9WZSxcbiAgICAgICAgX1ZDLFxuICAgICAgICBfRExDLFxuICAgICAgICBfRW4sXG4gICAgICAgIF9LTVNLQSxcbiAgICAgICAgX1RDLFxuICAgICAgICBfTUFhLFxuICAgICAgICBfUkksXG4gICAgICAgIF9MLFxuICAgICAgICBfU3QsXG4gICAgICAgIF9TUixcbiAgICAgICAgX1NSQ3QsXG4gICAgICAgIF9MVVMsXG4gICAgICAgIF9MVVNSLFxuICAgICAgICBfTFVTUkMsXG4gICAgICAgIF9GU0MsXG4gICAgICAgIF9QVCxcbiAgICAgICAgX0lDUixcbiAgICAgICAgX1NQVkFpLFxuICAgICAgICBfU0pBLFxuICAgICAgICBfQXIsXG4gICAgICAgIF9FUyxcbiAgICAgICAgX1NTbixcbiAgICAgICAgX1JWQyxcbiAgICAgICAgX0xDLFxuICAgICAgICBfVENlLFxuICAgIF0sXG4gICAgW1xuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAxLFxuICAgICAgICAwLFxuICAgICAgICAxLFxuICAgICAgICAxLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBWcGNDb25maWdSZXNwb25zZSxcbiAgICAgICAgKCkgPT4gRGVhZExldHRlckNvbmZpZyxcbiAgICAgICAgWygpID0+IEVudmlyb25tZW50UmVzcG9uc2UsIDBdLFxuICAgICAgICAwLFxuICAgICAgICAoKSA9PiBUcmFjaW5nQ29uZmlnUmVzcG9uc2UsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IExheWVyc1JlZmVyZW5jZUxpc3QsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IEZpbGVTeXN0ZW1Db25maWdMaXN0LFxuICAgICAgICAwLFxuICAgICAgICBbKCkgPT4gSW1hZ2VDb25maWdSZXNwb25zZSwgMF0sXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDY0IHwgMCxcbiAgICAgICAgKCkgPT4gRXBoZW1lcmFsU3RvcmFnZSxcbiAgICAgICAgKCkgPT4gU25hcFN0YXJ0UmVzcG9uc2UsXG4gICAgICAgIFsoKSA9PiBSdW50aW1lVmVyc2lvbkNvbmZpZywgMF0sXG4gICAgICAgICgpID0+IExvZ2dpbmdDb25maWcsXG4gICAgICAgICgpID0+IFRlbmFuY3lDb25maWcsXG4gICAgXSxcbl07XG52YXIgRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9GRUlDLFxuICAgIDAsXG4gICAgW19MTSwgX0ZBLCBfTVJBLCBfTUVBSVMsIF9EQ10sXG4gICAgWzQsIDAsIDEsIDEsICgpID0+IERlc3RpbmF0aW9uQ29uZmlnXSxcbl07XG52YXIgRnVuY3Rpb25VcmxDb25maWcgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfRlVDLFxuICAgIDAsXG4gICAgW19GVSwgX0ZBLCBfQ1QsIF9MTVQsIF9DbywgX0FULCBfSU1dLFxuICAgIFswLCAwLCAwLCAwLCAoKSA9PiBDb3JzLCAwLCAwXSxcbl07XG52YXIgR2V0QWNjb3VudFNldHRpbmdzUmVxdWVzdCA9IFszLCBuMCwgX0dBU1IsIDAsIFtdLCBbXV07XG52YXIgR2V0QWNjb3VudFNldHRpbmdzUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0FTUmUsXG4gICAgMCxcbiAgICBbX0FMLCBfQVVdLFxuICAgIFsoKSA9PiBBY2NvdW50TGltaXQsICgpID0+IEFjY291bnRVc2FnZV0sXG5dO1xudmFyIEdldEFsaWFzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9HQVIsXG4gICAgMCxcbiAgICBbX0ZOLCBfTl0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFswLCAxXSxcbiAgICBdLFxuXTtcbnZhciBHZXRDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QgPSBbMywgbjAsIF9HQ1NDUiwgMCwgW19DU0NBXSwgW1swLCAxXV1dO1xudmFyIEdldENvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2UgPSBbMywgbjAsIF9HQ1NDUmUsIDAsIFtfQ1NDXSwgWygpID0+IENvZGVTaWduaW5nQ29uZmlnXV07XG52YXIgR2V0RXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdCA9IFszLCBuMCwgX0dFU01SLCAwLCBbX1VVSURdLCBbWzAsIDFdXV07XG52YXIgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QgPSBbMywgbjAsIF9HRkNTQ1IsIDAsIFtfRk5dLCBbWzAsIDFdXV07XG52YXIgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlID0gWzMsIG4wLCBfR0ZDU0NSZSwgMCwgW19DU0NBLCBfRk5dLCBbMCwgMF1dO1xudmFyIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lSZXF1ZXN0ID0gWzMsIG4wLCBfR0ZDUiwgMCwgW19GTl0sIFtbMCwgMV1dXTtcbnZhciBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5UmVzcG9uc2UgPSBbMywgbjAsIF9HRkNSZSwgMCwgW19SQ0VdLCBbMV1dO1xudmFyIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0ZDUmV0LFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0ZFSUNSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXF1ZXN0ID0gWzMsIG4wLCBfR0ZSQ1IsIDAsIFtfRk5dLCBbWzAsIDFdXV07XG52YXIgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXNwb25zZSA9IFszLCBuMCwgX0dGUkNSZSwgMCwgW19STF0sIFswXV07XG52YXIgR2V0RnVuY3Rpb25SZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dGUixcbiAgICAwLFxuICAgIFtfRk4sIF9RXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX1EsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIEdldEZ1bmN0aW9uUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0ZSZSxcbiAgICAwLFxuICAgIFtfQ29uLCBfQ29kLCBfVGEsIF9URSwgX0NdLFxuICAgIFtbKCkgPT4gRnVuY3Rpb25Db25maWd1cmF0aW9uLCAwXSwgKCkgPT4gRnVuY3Rpb25Db2RlTG9jYXRpb24sIDEyOCB8IDAsICgpID0+IFRhZ3NFcnJvciwgKCkgPT4gQ29uY3VycmVuY3ldLFxuXTtcbnZhciBHZXRGdW5jdGlvblVybENvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0ZVQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfUV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9RLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBHZXRGdW5jdGlvblVybENvbmZpZ1Jlc3BvbnNlID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dGVUNSZSxcbiAgICAwLFxuICAgIFtfRlUsIF9GQSwgX0FULCBfQ28sIF9DVCwgX0xNVCwgX0lNXSxcbiAgICBbMCwgMCwgMCwgKCkgPT4gQ29ycywgMCwgMCwgMF0sXG5dO1xudmFyIEdldExheWVyVmVyc2lvbkJ5QXJuUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9HTFZCQVIsXG4gICAgMCxcbiAgICBbX0Fybl0sXG4gICAgW1xuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfQXJuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBHZXRMYXllclZlcnNpb25Qb2xpY3lSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dMVlBSLFxuICAgIDAsXG4gICAgW19MTiwgX1ZOXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgWzEsIDFdLFxuICAgIF0sXG5dO1xudmFyIEdldExheWVyVmVyc2lvblBvbGljeVJlc3BvbnNlID0gWzMsIG4wLCBfR0xWUFJlLCAwLCBbX1BvLCBfUkldLCBbMCwgMF1dO1xudmFyIEdldExheWVyVmVyc2lvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0xWUixcbiAgICAwLFxuICAgIFtfTE4sIF9WTl0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFsxLCAxXSxcbiAgICBdLFxuXTtcbnZhciBHZXRMYXllclZlcnNpb25SZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9HTFZSZSxcbiAgICAwLFxuICAgIFtfQ29udCwgX0xBLCBfTFZBLCBfRCwgX0NELCBfVmUsIF9DUiwgX0xJLCBfQ0FdLFxuICAgIFsoKSA9PiBMYXllclZlcnNpb25Db250ZW50T3V0cHV0LCAwLCAwLCAwLCAwLCAxLCA2NCB8IDAsIDAsIDY0IHwgMF0sXG5dO1xudmFyIEdldFBvbGljeVJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR1BSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgR2V0UG9saWN5UmVzcG9uc2UgPSBbMywgbjAsIF9HUFJlLCAwLCBbX1BvLCBfUkldLCBbMCwgMF1dO1xudmFyIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dQQ0NSLFxuICAgIDAsXG4gICAgW19GTiwgX1FdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ1Jlc3BvbnNlID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dQQ0NSZSxcbiAgICAwLFxuICAgIFtfUlBDRSwgX0FQQ0UsIF9BUENFbCwgX1N0YSwgX1NSdCwgX0xNXSxcbiAgICBbMSwgMSwgMSwgMCwgMCwgMF0sXG5dO1xudmFyIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9HUk1DUixcbiAgICAwLFxuICAgIFtfRk4sIF9RXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX1EsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR1JNQ1JlLFxuICAgIDAsXG4gICAgW19VUk8sIF9SVkEsIF9GQV0sXG4gICAgWzAsIDAsIDBdLFxuXTtcbnZhciBJbWFnZUNvbmZpZyA9IFszLCBuMCwgX0lDLCAwLCBbX0VQLCBfQ29tLCBfV0RdLCBbNjQgfCAwLCA2NCB8IDAsIDBdXTtcbnZhciBJbWFnZUNvbmZpZ0Vycm9yID0gWzMsIG4wLCBfSUNFLCAwLCBbX0VDLCBfTV0sIFswLCBbKCkgPT4gU2Vuc2l0aXZlU3RyaW5nLCAwXV1dO1xudmFyIEltYWdlQ29uZmlnUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfSUNSLFxuICAgIDAsXG4gICAgW19JQywgX0VyXSxcbiAgICBbKCkgPT4gSW1hZ2VDb25maWcsIFsoKSA9PiBJbWFnZUNvbmZpZ0Vycm9yLCAwXV0sXG5dO1xudmFyIEludmFsaWRDb2RlU2lnbmF0dXJlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9JQ1NFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDAsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoSW52YWxpZENvZGVTaWduYXR1cmVFeGNlcHRpb24sIEludmFsaWRDb2RlU2lnbmF0dXJlRXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfSVBWRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDAwLFxuICAgIH0sXG4gICAgW19ULCBfbV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEludmFsaWRQYXJhbWV0ZXJWYWx1ZUV4Y2VwdGlvbiwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRSZXF1ZXN0Q29udGVudEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfSVJDRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDAwLFxuICAgIH0sXG4gICAgW19ULCBfbV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEludmFsaWRSZXF1ZXN0Q29udGVudEV4Y2VwdGlvbiwgSW52YWxpZFJlcXVlc3RDb250ZW50RXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRSdW50aW1lRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9JUkUsXG4gICAge1xuICAgICAgICBbX2VdOiBfc2UsXG4gICAgICAgIFtfaEVdOiA1MDIsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoSW52YWxpZFJ1bnRpbWVFeGNlcHRpb24sIEludmFsaWRSdW50aW1lRXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRTZWN1cml0eUdyb3VwSURFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0lTR0lERSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMixcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihJbnZhbGlkU2VjdXJpdHlHcm91cElERXhjZXB0aW9uLCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRTdWJuZXRJREV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfSVNJREUsXG4gICAge1xuICAgICAgICBbX2VdOiBfc2UsXG4gICAgICAgIFtfaEVdOiA1MDIsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoSW52YWxpZFN1Ym5ldElERXhjZXB0aW9uLCBJbnZhbGlkU3VibmV0SURFeGNlcHRpb24kMSk7XG52YXIgSW52YWxpZFppcEZpbGVFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0laRkUsXG4gICAge1xuICAgICAgICBbX2VdOiBfc2UsXG4gICAgICAgIFtfaEVdOiA1MDIsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoSW52YWxpZFppcEZpbGVFeGNlcHRpb24sIEludmFsaWRaaXBGaWxlRXhjZXB0aW9uJDEpO1xudmFyIEludm9jYXRpb25SZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0lSLFxuICAgIDAsXG4gICAgW19GTiwgX0lULCBfTFQsIF9DQywgX1BheSwgX1EsIF9USV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oSF06IF9YQUlULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hIXTogX1hBTFQsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfWEFDQyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFsoKSA9PiBfQmxvYiwgMTZdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oSF06IF9YQVRJLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBJbnZvY2F0aW9uUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfSVJuLFxuICAgIDAsXG4gICAgW19TQ3QsIF9GRSwgX0xSLCBfUGF5LCBfRVZdLFxuICAgIFtcbiAgICAgICAgWzEsIDMyXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hIXTogX1hBRkUsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfWEFMUixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFsoKSA9PiBfQmxvYiwgMTZdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfWEFFVixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgSW52b2tlQXN5bmNSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0lBUixcbiAgICAwLFxuICAgIFtfRk4sIF9JQV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFsoKSA9PiBCbG9iU3RyZWFtLCAxNl0sXG4gICAgXSxcbl07XG52YXIgSW52b2tlQXN5bmNSZXNwb25zZSA9IFszLCBuMCwgX0lBUm4sIDAsIFtfU3RhXSwgW1sxLCAzMl1dXTtcbnZhciBJbnZva2VSZXNwb25zZVN0cmVhbVVwZGF0ZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9JUlNVLFxuICAgIDAsXG4gICAgW19QYXldLFxuICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgICAgKCkgPT4gX0Jsb2IsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19lUF06IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbXBsZXRlRXZlbnQgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfSVdSU0NFLFxuICAgIDAsXG4gICAgW19FQywgX0VELCBfTFJdLFxuICAgIFswLCAwLCAwXSxcbl07XG52YXIgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9JV1JTUixcbiAgICAwLFxuICAgIFtfRk4sIF9JVCwgX0xULCBfQ0MsIF9RLCBfUGF5LCBfVEldLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfWEFJVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oSF06IF9YQUxULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hIXTogX1hBQ0MsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFsoKSA9PiBfQmxvYiwgMTZdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfWEFUSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfSVdSU1JuLFxuICAgIDAsXG4gICAgW19TQ3QsIF9FViwgX0VTdiwgX1JTQ1RdLFxuICAgIFtcbiAgICAgICAgWzEsIDMyXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hIXTogX1hBRVYsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbKCkgPT4gSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtUmVzcG9uc2VFdmVudCwgMTZdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfQ1RfLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBLYWZrYVNjaGVtYVJlZ2lzdHJ5QWNjZXNzQ29uZmlnID0gWzMsIG4wLCBfS1NSQUMsIDAsIFtfVCwgX1VSSV0sIFswLCAwXV07XG52YXIgS2Fma2FTY2hlbWFSZWdpc3RyeUNvbmZpZyA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9LU1JDLFxuICAgIDAsXG4gICAgW19TUlVSSSwgX0VSRiwgX0FDYywgX1NWQ10sXG4gICAgWzAsIDAsICgpID0+IEthZmthU2NoZW1hUmVnaXN0cnlBY2Nlc3NDb25maWdMaXN0LCAoKSA9PiBLYWZrYVNjaGVtYVZhbGlkYXRpb25Db25maWdMaXN0XSxcbl07XG52YXIgS2Fma2FTY2hlbWFWYWxpZGF0aW9uQ29uZmlnID0gWzMsIG4wLCBfS1NWQywgMCwgW19BdF0sIFswXV07XG52YXIgS01TQWNjZXNzRGVuaWVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9LTVNBREUsXG4gICAge1xuICAgICAgICBbX2VdOiBfc2UsXG4gICAgICAgIFtfaEVdOiA1MDIsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoS01TQWNjZXNzRGVuaWVkRXhjZXB0aW9uLCBLTVNBY2Nlc3NEZW5pZWRFeGNlcHRpb24kMSk7XG52YXIgS01TRGlzYWJsZWRFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0tNU0RFLFxuICAgIHtcbiAgICAgICAgW19lXTogX3NlLFxuICAgICAgICBbX2hFXTogNTAyLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEtNU0Rpc2FibGVkRXhjZXB0aW9uLCBLTVNEaXNhYmxlZEV4Y2VwdGlvbiQxKTtcbnZhciBLTVNJbnZhbGlkU3RhdGVFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0tNU0lTRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMixcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihLTVNJbnZhbGlkU3RhdGVFeGNlcHRpb24sIEtNU0ludmFsaWRTdGF0ZUV4Y2VwdGlvbiQxKTtcbnZhciBLTVNOb3RGb3VuZEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfS01TTkZFLFxuICAgIHtcbiAgICAgICAgW19lXTogX3NlLFxuICAgICAgICBbX2hFXTogNTAyLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEtNU05vdEZvdW5kRXhjZXB0aW9uLCBLTVNOb3RGb3VuZEV4Y2VwdGlvbiQxKTtcbnZhciBMYXllciA9IFszLCBuMCwgX0xhLCAwLCBbX0FybiwgX0NTLCBfU1BWQWksIF9TSkFdLCBbMCwgMSwgMCwgMF1dO1xudmFyIExheWVyc0xpc3RJdGVtID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0xMSSxcbiAgICAwLFxuICAgIFtfTE4sIF9MQSwgX0xNVl0sXG4gICAgWzAsIDAsICgpID0+IExheWVyVmVyc2lvbnNMaXN0SXRlbV0sXG5dO1xudmFyIExheWVyVmVyc2lvbkNvbnRlbnRJbnB1dCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MVkNJLFxuICAgIDAsXG4gICAgW19TQiwgX1NLLCBfU09WLCBfWkZdLFxuICAgIFswLCAwLCAwLCBbKCkgPT4gX0Jsb2IsIDBdXSxcbl07XG52YXIgTGF5ZXJWZXJzaW9uQ29udGVudE91dHB1dCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MVkNPLFxuICAgIDAsXG4gICAgW19MbywgX0NTbywgX0NTLCBfU1BWQWksIF9TSkFdLFxuICAgIFswLCAwLCAxLCAwLCAwXSxcbl07XG52YXIgTGF5ZXJWZXJzaW9uc0xpc3RJdGVtID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0xWTEksXG4gICAgMCxcbiAgICBbX0xWQSwgX1ZlLCBfRCwgX0NELCBfQ1IsIF9MSSwgX0NBXSxcbiAgICBbMCwgMSwgMCwgMCwgNjQgfCAwLCAwLCA2NCB8IDBdLFxuXTtcbnZhciBMaXN0QWxpYXNlc1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTEFSLFxuICAgIDAsXG4gICAgW19GTiwgX0ZWLCBfTWEsIF9NSV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9GVixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NYSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgTGlzdEFsaWFzZXNSZXNwb25zZSA9IFszLCBuMCwgX0xBUmksIDAsIFtfTk0sIF9BbF0sIFswLCAoKSA9PiBBbGlhc0xpc3RdXTtcbnZhciBMaXN0Q29kZVNpZ25pbmdDb25maWdzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MQ1NDUixcbiAgICAwLFxuICAgIFtfTWEsIF9NSV0sXG4gICAgW1xuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfTWEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfTUksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NSZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MQ1NDUmksXG4gICAgMCxcbiAgICBbX05NLCBfQ1NDb10sXG4gICAgWzAsICgpID0+IENvZGVTaWduaW5nQ29uZmlnTGlzdF0sXG5dO1xudmFyIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MRVNNUixcbiAgICAwLFxuICAgIFtfRVNBLCBfRk4sIF9NYSwgX01JXSxcbiAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9FU0EsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfRk4sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfTWEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfTUksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTEVTTVJpLFxuICAgIDAsXG4gICAgW19OTSwgX0VTTV0sXG4gICAgWzAsICgpID0+IEV2ZW50U291cmNlTWFwcGluZ3NMaXN0XSxcbl07XG52YXIgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MRkVJQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfTWEsIF9NSV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NYSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTEZFSUNSaSxcbiAgICAwLFxuICAgIFtfRkVJQ3UsIF9OTV0sXG4gICAgWygpID0+IEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdMaXN0LCAwXSxcbl07XG52YXIgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0xGQkNTQ1IsXG4gICAgMCxcbiAgICBbX0NTQ0EsIF9NYSwgX01JXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01hLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01JLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0xGQkNTQ1JpLFxuICAgIDAsXG4gICAgW19OTSwgX0ZBdV0sXG4gICAgWzAsIDY0IHwgMF0sXG5dO1xudmFyIExpc3RGdW5jdGlvbnNSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0xGUixcbiAgICAwLFxuICAgIFtfTVIsIF9GViwgX01hLCBfTUldLFxuICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01SLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX0ZWLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01hLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01JLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBMaXN0RnVuY3Rpb25zUmVzcG9uc2UgPSBbMywgbjAsIF9MRlJpLCAwLCBbX05NLCBfRnVdLCBbMCwgWygpID0+IEZ1bmN0aW9uTGlzdCwgMF1dXTtcbnZhciBMaXN0RnVuY3Rpb25VcmxDb25maWdzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MRlVDUixcbiAgICAwLFxuICAgIFtfRk4sIF9NYSwgX01JXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01hLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01JLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBMaXN0RnVuY3Rpb25VcmxDb25maWdzUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTEZVQ1JpLFxuICAgIDAsXG4gICAgW19GVUN1LCBfTk1dLFxuICAgIFsoKSA9PiBGdW5jdGlvblVybENvbmZpZ0xpc3QsIDBdLFxuXTtcbnZhciBMaXN0TGF5ZXJzUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MTFIsXG4gICAgMCxcbiAgICBbX0NSbywgX01hLCBfTUksIF9DQW9dLFxuICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX0NSbyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NYSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9DQW8sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIExpc3RMYXllcnNSZXNwb25zZSA9IFszLCBuMCwgX0xMUmksIDAsIFtfTk0sIF9MXSwgWzAsICgpID0+IExheWVyc0xpc3RdXTtcbnZhciBMaXN0TGF5ZXJWZXJzaW9uc1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTExWUixcbiAgICAwLFxuICAgIFtfQ1JvLCBfTE4sIF9NYSwgX01JLCBfQ0FvXSxcbiAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9DUm8sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NYSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9DQW8sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIF0sXG5dO1xudmFyIExpc3RMYXllclZlcnNpb25zUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTExWUmksXG4gICAgMCxcbiAgICBbX05NLCBfTFZdLFxuICAgIFswLCAoKSA9PiBMYXllclZlcnNpb25zTGlzdF0sXG5dO1xudmFyIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTFBDQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfTWEsIF9NSV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NYSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9NSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTFBDQ1JpLFxuICAgIDAsXG4gICAgW19QQ0MsIF9OTV0sXG4gICAgWygpID0+IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdMaXN0LCAwXSxcbl07XG52YXIgTGlzdFRhZ3NSZXF1ZXN0ID0gWzMsIG4wLCBfTFRSLCAwLCBbX1JlXSwgW1swLCAxXV1dO1xudmFyIExpc3RUYWdzUmVzcG9uc2UgPSBbMywgbjAsIF9MVFJpLCAwLCBbX1RhXSwgWzEyOCB8IDBdXTtcbnZhciBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9MVkJGUixcbiAgICAwLFxuICAgIFtfRk4sIF9NYSwgX01JXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01hLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX01JLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTFZCRlJpLFxuICAgIDAsXG4gICAgW19OTSwgX1Zlcl0sXG4gICAgWzAsIFsoKSA9PiBGdW5jdGlvbkxpc3QsIDBdXSxcbl07XG52YXIgTG9nZ2luZ0NvbmZpZyA9IFszLCBuMCwgX0xDLCAwLCBbX0xGLCBfQUxMLCBfU0xMLCBfTEddLCBbMCwgMCwgMCwgMF1dO1xudmFyIE9uRmFpbHVyZSA9IFszLCBuMCwgX09GLCAwLCBbX0RlXSwgWzBdXTtcbnZhciBPblN1Y2Nlc3MgPSBbMywgbjAsIF9PUywgMCwgW19EZV0sIFswXV07XG52YXIgUG9saWN5TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX1BMRUUsXG4gICAge1xuICAgICAgICBbX2VdOiBfYyxcbiAgICAgICAgW19oRV06IDQwMCxcbiAgICB9LFxuICAgIFtfVCwgX21dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihQb2xpY3lMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbiwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24kMSk7XG52YXIgUHJlY29uZGl0aW9uRmFpbGVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9QRkUsXG4gICAge1xuICAgICAgICBbX2VdOiBfYyxcbiAgICAgICAgW19oRV06IDQxMixcbiAgICB9LFxuICAgIFtfVCwgX21dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihQcmVjb25kaXRpb25GYWlsZWRFeGNlcHRpb24sIFByZWNvbmRpdGlvbkZhaWxlZEV4Y2VwdGlvbiQxKTtcbnZhciBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTGlzdEl0ZW0gPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfUENDTEksXG4gICAgMCxcbiAgICBbX0ZBLCBfUlBDRSwgX0FQQ0UsIF9BUENFbCwgX1N0YSwgX1NSdCwgX0xNXSxcbiAgICBbMCwgMSwgMSwgMSwgMCwgMCwgMF0sXG5dO1xudmFyIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfUENDTkZFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDQsXG4gICAgfSxcbiAgICBbX1QsIF9tXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ05vdEZvdW5kRXhjZXB0aW9uLCBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFeGNlcHRpb24kMSk7XG52YXIgUHJvdmlzaW9uZWRQb2xsZXJDb25maWcgPSBbMywgbjAsIF9QUEMsIDAsIFtfTVAsIF9NUGFdLCBbMSwgMV1dO1xudmFyIFB1Ymxpc2hMYXllclZlcnNpb25SZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1BMVlIsXG4gICAgMCxcbiAgICBbX0xOLCBfRCwgX0NvbnQsIF9DUiwgX0xJLCBfQ0FdLFxuICAgIFtbMCwgMV0sIDAsIFsoKSA9PiBMYXllclZlcnNpb25Db250ZW50SW5wdXQsIDBdLCA2NCB8IDAsIDAsIDY0IHwgMF0sXG5dO1xudmFyIFB1Ymxpc2hMYXllclZlcnNpb25SZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9QTFZSdSxcbiAgICAwLFxuICAgIFtfQ29udCwgX0xBLCBfTFZBLCBfRCwgX0NELCBfVmUsIF9DUiwgX0xJLCBfQ0FdLFxuICAgIFsoKSA9PiBMYXllclZlcnNpb25Db250ZW50T3V0cHV0LCAwLCAwLCAwLCAwLCAxLCA2NCB8IDAsIDAsIDY0IHwgMF0sXG5dO1xudmFyIFB1Ymxpc2hWZXJzaW9uUmVxdWVzdCA9IFszLCBuMCwgX1BWUiwgMCwgW19GTiwgX0NTbywgX0QsIF9SSV0sIFtbMCwgMV0sIDAsIDAsIDBdXTtcbnZhciBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdCA9IFszLCBuMCwgX1BGQ1NDUiwgMCwgW19DU0NBLCBfRk5dLCBbMCwgWzAsIDFdXV07XG52YXIgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlID0gWzMsIG4wLCBfUEZDU0NSdSwgMCwgW19DU0NBLCBfRk5dLCBbMCwgMF1dO1xudmFyIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lSZXF1ZXN0ID0gWzMsIG4wLCBfUEZDUiwgMCwgW19GTiwgX1JDRV0sIFtbMCwgMV0sIDFdXTtcbnZhciBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9QRkVJQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfUSwgX01SQSwgX01FQUlTLCBfRENdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIDEsXG4gICAgICAgIDEsXG4gICAgICAgICgpID0+IERlc3RpbmF0aW9uQ29uZmlnLFxuICAgIF0sXG5dO1xudmFyIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnUmVxdWVzdCA9IFszLCBuMCwgX1BGUkNSLCAwLCBbX0ZOLCBfUkxdLCBbWzAsIDFdLCAwXV07XG52YXIgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXNwb25zZSA9IFszLCBuMCwgX1BGUkNSdSwgMCwgW19STF0sIFswXV07XG52YXIgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfUFBDQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfUSwgX1BDRV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9RLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgMSxcbiAgICBdLFxuXTtcbnZhciBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfUFBDQ1J1LFxuICAgIDAsXG4gICAgW19SUENFLCBfQVBDRSwgX0FQQ0VsLCBfU3RhLCBfU1J0LCBfTE1dLFxuICAgIFsxLCAxLCAxLCAwLCAwLCAwXSxcbl07XG52YXIgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1BSTUNSLFxuICAgIDAsXG4gICAgW19GTiwgX1EsIF9VUk8sIF9SVkFdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgXSxcbl07XG52YXIgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdSZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9QUk1DUnUsXG4gICAgMCxcbiAgICBbX1VSTywgX0ZBLCBfUlZBXSxcbiAgICBbMCwgMCwgMF0sXG5dO1xudmFyIFJlY3Vyc2l2ZUludm9jYXRpb25FeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX1JJRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDAwLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFJlY3Vyc2l2ZUludm9jYXRpb25FeGNlcHRpb24sIFJlY3Vyc2l2ZUludm9jYXRpb25FeGNlcHRpb24kMSk7XG52YXIgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfUkxWUFIsXG4gICAgMCxcbiAgICBbX0xOLCBfVk4sIF9TSSwgX1JJXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgWzEsIDFdLFxuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9SSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgUmVtb3ZlUGVybWlzc2lvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfUlBSLFxuICAgIDAsXG4gICAgW19GTiwgX1NJLCBfUSwgX1JJXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaFFdOiBfUSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9SSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgXSxcbl07XG52YXIgUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9SVExFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MTMsXG4gICAgfSxcbiAgICBbX1QsIF9tXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uLCBSZXF1ZXN0VG9vTGFyZ2VFeGNlcHRpb24kMSk7XG52YXIgUmVzb3VyY2VDb25mbGljdEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfUkNFZSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDA5LFxuICAgIH0sXG4gICAgW19ULCBfbV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFJlc291cmNlQ29uZmxpY3RFeGNlcHRpb24sIFJlc291cmNlQ29uZmxpY3RFeGNlcHRpb24kMSk7XG52YXIgUmVzb3VyY2VJblVzZUV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfUklVRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDAwLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFJlc291cmNlSW5Vc2VFeGNlcHRpb24sIFJlc291cmNlSW5Vc2VFeGNlcHRpb24kMSk7XG52YXIgUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfUk5GRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDA0LFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24sIFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24kMSk7XG52YXIgUmVzb3VyY2VOb3RSZWFkeUV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfUk5SRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMixcbiAgICB9LFxuICAgIFtfVCwgX21dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihSZXNvdXJjZU5vdFJlYWR5RXhjZXB0aW9uLCBSZXNvdXJjZU5vdFJlYWR5RXhjZXB0aW9uJDEpO1xudmFyIFJ1bnRpbWVWZXJzaW9uQ29uZmlnID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1JWQyxcbiAgICAwLFxuICAgIFtfUlZBLCBfRXJdLFxuICAgIFswLCBbKCkgPT4gUnVudGltZVZlcnNpb25FcnJvciwgMF1dLFxuXTtcbnZhciBSdW50aW1lVmVyc2lvbkVycm9yID0gWzMsIG4wLCBfUlZFLCAwLCBbX0VDLCBfTV0sIFswLCBbKCkgPT4gU2Vuc2l0aXZlU3RyaW5nLCAwXV1dO1xudmFyIFNjYWxpbmdDb25maWcgPSBbMywgbjAsIF9TQywgMCwgW19NQ2FdLCBbMV1dO1xudmFyIFNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UgPSBbMywgbjAsIF9TTUVTLCAwLCBbX0VuZF0sIFtbMiwgbjAsIF9FbmQsIDAsIDAsIDY0IHwgMF1dXTtcbnZhciBTZWxmTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWcgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfU01LRVNDLFxuICAgIDAsXG4gICAgW19DR0ksIF9TUkNdLFxuICAgIFswLCAoKSA9PiBLYWZrYVNjaGVtYVJlZ2lzdHJ5Q29uZmlnXSxcbl07XG52YXIgU2VyaWFsaXplZFJlcXVlc3RFbnRpdHlUb29MYXJnZUV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfU1JFVExFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MTMsXG4gICAgfSxcbiAgICBbX1QsIF9tXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoU2VyaWFsaXplZFJlcXVlc3RFbnRpdHlUb29MYXJnZUV4Y2VwdGlvbiwgU2VyaWFsaXplZFJlcXVlc3RFbnRpdHlUb29MYXJnZUV4Y2VwdGlvbiQxKTtcbnZhciBTZXJ2aWNlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9TRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9zZSxcbiAgICAgICAgW19oRV06IDUwMCxcbiAgICB9LFxuICAgIFtfVCwgX01dLFxuICAgIFswLCAwXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihTZXJ2aWNlRXhjZXB0aW9uLCBTZXJ2aWNlRXhjZXB0aW9uJDEpO1xudmFyIFNuYXBTdGFydCA9IFszLCBuMCwgX1NTbiwgMCwgW19BT3BdLCBbMF1dO1xudmFyIFNuYXBTdGFydEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfU1NFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDAsXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoU25hcFN0YXJ0RXhjZXB0aW9uLCBTbmFwU3RhcnRFeGNlcHRpb24kMSk7XG52YXIgU25hcFN0YXJ0Tm90UmVhZHlFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX1NTTlJFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MDksXG4gICAgfSxcbiAgICBbX1QsIF9NXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoU25hcFN0YXJ0Tm90UmVhZHlFeGNlcHRpb24sIFNuYXBTdGFydE5vdFJlYWR5RXhjZXB0aW9uJDEpO1xudmFyIFNuYXBTdGFydFJlc3BvbnNlID0gWzMsIG4wLCBfU1NSLCAwLCBbX0FPcCwgX09TcF0sIFswLCAwXV07XG52YXIgU25hcFN0YXJ0VGltZW91dEV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfU1NURSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDA4LFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb24sIFNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb24kMSk7XG52YXIgU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbiA9IFszLCBuMCwgX1NBQ28sIDAsIFtfVCwgX1VSSV0sIFswLCAwXV07XG52YXIgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9TSVBBTFJFLFxuICAgIHtcbiAgICAgICAgW19lXTogX3NlLFxuICAgICAgICBbX2hFXTogNTAyLFxuICAgIH0sXG4gICAgW19ULCBfTV0sXG4gICAgWzAsIDBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEV4Y2VwdGlvbiwgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXhjZXB0aW9uJDEpO1xudmFyIFRhZ1Jlc291cmNlUmVxdWVzdCA9IFszLCBuMCwgX1RSUiwgMCwgW19SZSwgX1RhXSwgW1swLCAxXSwgMTI4IHwgMF1dO1xudmFyIFRhZ3NFcnJvciA9IFszLCBuMCwgX1RFLCAwLCBbX0VDLCBfTV0sIFswLCAwXV07XG52YXIgVGVuYW5jeUNvbmZpZyA9IFszLCBuMCwgX1RDZSwgMCwgW19USU1dLCBbMF1dO1xudmFyIFRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfVE1SRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgICAgICBbX2hFXTogNDI5LFxuICAgIH0sXG4gICAgW19yQVMsIF9ULCBfbSwgX1JlYV0sXG4gICAgW1xuICAgICAgICBbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtfaEhdOiBfUkEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgIF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uLCBUb29NYW55UmVxdWVzdHNFeGNlcHRpb24kMSk7XG52YXIgVHJhY2luZ0NvbmZpZyA9IFszLCBuMCwgX1RDLCAwLCBbX01vXSwgWzBdXTtcbnZhciBUcmFjaW5nQ29uZmlnUmVzcG9uc2UgPSBbMywgbjAsIF9UQ1IsIDAsIFtfTW9dLCBbMF1dO1xudmFyIFVuc3VwcG9ydGVkTWVkaWFUeXBlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9VTVRFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgICAgIFtfaEVdOiA0MTUsXG4gICAgfSxcbiAgICBbX1QsIF9tXSxcbiAgICBbMCwgMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb24sIFVuc3VwcG9ydGVkTWVkaWFUeXBlRXhjZXB0aW9uJDEpO1xudmFyIFVudGFnUmVzb3VyY2VSZXF1ZXN0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1VSUixcbiAgICAwLFxuICAgIFtfUmUsIF9US10sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDY0IHwgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX3RLLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICBdLFxuXTtcbnZhciBVcGRhdGVBbGlhc1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVUFSLFxuICAgIDAsXG4gICAgW19GTiwgX04sIF9GViwgX0QsIF9SQywgX1JJXSxcbiAgICBbWzAsIDFdLCBbMCwgMV0sIDAsIDAsICgpID0+IEFsaWFzUm91dGluZ0NvbmZpZ3VyYXRpb24sIDBdLFxuXTtcbnZhciBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVUNTQ1IsXG4gICAgMCxcbiAgICBbX0NTQ0EsIF9ELCBfQVAsIF9DU1BdLFxuICAgIFtbMCwgMV0sIDAsICgpID0+IEFsbG93ZWRQdWJsaXNoZXJzLCAoKSA9PiBDb2RlU2lnbmluZ1BvbGljaWVzXSxcbl07XG52YXIgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdSZXNwb25zZSA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9VQ1NDUnAsXG4gICAgMCxcbiAgICBbX0NTQ10sXG4gICAgWygpID0+IENvZGVTaWduaW5nQ29uZmlnXSxcbl07XG52YXIgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9VRVNNUixcbiAgICAwLFxuICAgIFtcbiAgICAgICAgX1VVSUQsXG4gICAgICAgIF9GTixcbiAgICAgICAgX0UsXG4gICAgICAgIF9CU2EsXG4gICAgICAgIF9GQ2ksXG4gICAgICAgIF9NQldJUyxcbiAgICAgICAgX0RDLFxuICAgICAgICBfTVJBSVMsXG4gICAgICAgIF9CQk9GRSxcbiAgICAgICAgX01SQSxcbiAgICAgICAgX1BGLFxuICAgICAgICBfU0FDLFxuICAgICAgICBfVFdJUyxcbiAgICAgICAgX0ZSVCxcbiAgICAgICAgX1NDLFxuICAgICAgICBfQU1LRVNDLFxuICAgICAgICBfU01LRVNDLFxuICAgICAgICBfRERCRVNDLFxuICAgICAgICBfS01TS0EsXG4gICAgICAgIF9NQyxcbiAgICAgICAgX1BQQyxcbiAgICBdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICAwLFxuICAgICAgICAyLFxuICAgICAgICAxLFxuICAgICAgICAoKSA9PiBGaWx0ZXJDcml0ZXJpYSxcbiAgICAgICAgMSxcbiAgICAgICAgKCkgPT4gRGVzdGluYXRpb25Db25maWcsXG4gICAgICAgIDEsXG4gICAgICAgIDIsXG4gICAgICAgIDEsXG4gICAgICAgIDEsXG4gICAgICAgICgpID0+IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zLFxuICAgICAgICAxLFxuICAgICAgICA2NCB8IDAsXG4gICAgICAgICgpID0+IFNjYWxpbmdDb25maWcsXG4gICAgICAgICgpID0+IEFtYXpvbk1hbmFnZWRLYWZrYUV2ZW50U291cmNlQ29uZmlnLFxuICAgICAgICAoKSA9PiBTZWxmTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWcsXG4gICAgICAgICgpID0+IERvY3VtZW50REJFdmVudFNvdXJjZUNvbmZpZyxcbiAgICAgICAgMCxcbiAgICAgICAgKCkgPT4gRXZlbnRTb3VyY2VNYXBwaW5nTWV0cmljc0NvbmZpZyxcbiAgICAgICAgKCkgPT4gUHJvdmlzaW9uZWRQb2xsZXJDb25maWcsXG4gICAgXSxcbl07XG52YXIgVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdCA9IFtcbiAgICAzLFxuICAgIG4wLFxuICAgIF9VRkNSLFxuICAgIDAsXG4gICAgW19GTiwgX1pGLCBfU0IsIF9TSywgX1NPViwgX0lVLCBfUHUsIF9EUiwgX1JJLCBfQXIsIF9TS01TS0FdLFxuICAgIFtbMCwgMV0sIFsoKSA9PiBfQmxvYiwgMF0sIDAsIDAsIDAsIDAsIDIsIDIsIDAsIDY0IHwgMCwgMF0sXG5dO1xudmFyIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvblJlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVUZDUnAsXG4gICAgMCxcbiAgICBbX0ZOLCBfUm8sIF9ILCBfRCwgX1RpLCBfTVMsIF9WQywgX0VuLCBfUiwgX0RMQywgX0tNU0tBLCBfVEMsIF9SSSwgX0wsIF9GU0MsIF9JQywgX0VTLCBfU1NuLCBfTENdLFxuICAgIFtcbiAgICAgICAgWzAsIDFdLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAxLFxuICAgICAgICAxLFxuICAgICAgICAoKSA9PiBWcGNDb25maWcsXG4gICAgICAgIFsoKSA9PiBFbnZpcm9ubWVudCwgMF0sXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IERlYWRMZXR0ZXJDb25maWcsXG4gICAgICAgIDAsXG4gICAgICAgICgpID0+IFRyYWNpbmdDb25maWcsXG4gICAgICAgIDAsXG4gICAgICAgIDY0IHwgMCxcbiAgICAgICAgKCkgPT4gRmlsZVN5c3RlbUNvbmZpZ0xpc3QsXG4gICAgICAgICgpID0+IEltYWdlQ29uZmlnLFxuICAgICAgICAoKSA9PiBFcGhlbWVyYWxTdG9yYWdlLFxuICAgICAgICAoKSA9PiBTbmFwU3RhcnQsXG4gICAgICAgICgpID0+IExvZ2dpbmdDb25maWcsXG4gICAgXSxcbl07XG52YXIgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVUZFSUNSLFxuICAgIDAsXG4gICAgW19GTiwgX1EsIF9NUkEsIF9NRUFJUywgX0RDXSxcbiAgICBbXG4gICAgICAgIFswLCAxXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbX2hRXTogX1EsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICAxLFxuICAgICAgICAxLFxuICAgICAgICAoKSA9PiBEZXN0aW5hdGlvbkNvbmZpZyxcbiAgICBdLFxuXTtcbnZhciBVcGRhdGVGdW5jdGlvblVybENvbmZpZ1JlcXVlc3QgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVUZVQ1IsXG4gICAgMCxcbiAgICBbX0ZOLCBfUSwgX0FULCBfQ28sIF9JTV0sXG4gICAgW1xuICAgICAgICBbMCwgMV0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgW19oUV06IF9RLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgMCxcbiAgICAgICAgKCkgPT4gQ29ycyxcbiAgICAgICAgMCxcbiAgICBdLFxuXTtcbnZhciBVcGRhdGVGdW5jdGlvblVybENvbmZpZ1Jlc3BvbnNlID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1VGVUNScCxcbiAgICAwLFxuICAgIFtfRlUsIF9GQSwgX0FULCBfQ28sIF9DVCwgX0xNVCwgX0lNXSxcbiAgICBbMCwgMCwgMCwgKCkgPT4gQ29ycywgMCwgMCwgMF0sXG5dO1xudmFyIFZwY0NvbmZpZyA9IFszLCBuMCwgX1ZDLCAwLCBbX1NJdSwgX1NHSSwgX0lBRkRTXSwgWzY0IHwgMCwgNjQgfCAwLCAyXV07XG52YXIgVnBjQ29uZmlnUmVzcG9uc2UgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfVkNSLFxuICAgIDAsXG4gICAgW19TSXUsIF9TR0ksIF9WSSwgX0lBRkRTXSxcbiAgICBbNjQgfCAwLCA2NCB8IDAsIDAsIDJdLFxuXTtcbnZhciBfX1VuaXQgPSBcInVuaXRcIjtcbnZhciBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uID0gWy0zLCBfc20sIFwiTGFtYmRhU2VydmljZUV4Y2VwdGlvblwiLCAwLCBbXSwgW11dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IoX3NtKS5yZWdpc3RlckVycm9yKExhbWJkYVNlcnZpY2VFeGNlcHRpb24sIExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMSk7XG52YXIgQWxpYXNMaXN0ID0gWzEsIG4wLCBfQUxsLCAwLCAoKSA9PiBBbGlhc0NvbmZpZ3VyYXRpb25dO1xudmFyIENvZGVTaWduaW5nQ29uZmlnTGlzdCA9IFsxLCBuMCwgX0NTQ0wsIDAsICgpID0+IENvZGVTaWduaW5nQ29uZmlnXTtcbnZhciBFdmVudFNvdXJjZU1hcHBpbmdzTGlzdCA9IFsxLCBuMCwgX0VTTUwsIDAsICgpID0+IEV2ZW50U291cmNlTWFwcGluZ0NvbmZpZ3VyYXRpb25dO1xudmFyIEZpbGVTeXN0ZW1Db25maWdMaXN0ID0gWzEsIG4wLCBfRlNDTCwgMCwgKCkgPT4gRmlsZVN5c3RlbUNvbmZpZ107XG52YXIgRmlsdGVyTGlzdCA9IFsxLCBuMCwgX0ZMLCAwLCAoKSA9PiBGaWx0ZXJdO1xudmFyIEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdMaXN0ID0gWzEsIG4wLCBfRkVJQ0wsIDAsICgpID0+IEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWddO1xudmFyIEZ1bmN0aW9uTGlzdCA9IFsxLCBuMCwgX0ZMdSwgMCwgWygpID0+IEZ1bmN0aW9uQ29uZmlndXJhdGlvbiwgMF1dO1xudmFyIEZ1bmN0aW9uVXJsQ29uZmlnTGlzdCA9IFsxLCBuMCwgX0ZVQ0wsIDAsICgpID0+IEZ1bmN0aW9uVXJsQ29uZmlnXTtcbnZhciBLYWZrYVNjaGVtYVJlZ2lzdHJ5QWNjZXNzQ29uZmlnTGlzdCA9IFtcbiAgICAxLFxuICAgIG4wLFxuICAgIF9LU1JBQ0wsXG4gICAgMCxcbiAgICAoKSA9PiBLYWZrYVNjaGVtYVJlZ2lzdHJ5QWNjZXNzQ29uZmlnLFxuXTtcbnZhciBLYWZrYVNjaGVtYVZhbGlkYXRpb25Db25maWdMaXN0ID0gWzEsIG4wLCBfS1NWQ0wsIDAsICgpID0+IEthZmthU2NoZW1hVmFsaWRhdGlvbkNvbmZpZ107XG52YXIgTGF5ZXJzTGlzdCA9IFsxLCBuMCwgX0xMLCAwLCAoKSA9PiBMYXllcnNMaXN0SXRlbV07XG52YXIgTGF5ZXJzUmVmZXJlbmNlTGlzdCA9IFsxLCBuMCwgX0xSTCwgMCwgKCkgPT4gTGF5ZXJdO1xudmFyIExheWVyVmVyc2lvbnNMaXN0ID0gWzEsIG4wLCBfTFZMLCAwLCAoKSA9PiBMYXllclZlcnNpb25zTGlzdEl0ZW1dO1xudmFyIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdMaXN0ID0gW1xuICAgIDEsXG4gICAgbjAsXG4gICAgX1BDQ0wsXG4gICAgMCxcbiAgICAoKSA9PiBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTGlzdEl0ZW0sXG5dO1xudmFyIFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zID0gWzEsIG4wLCBfU0FDLCAwLCAoKSA9PiBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uXTtcbnZhciBFbnZpcm9ubWVudFZhcmlhYmxlcyA9IFtcbiAgICAyLFxuICAgIG4wLFxuICAgIF9FVm4sXG4gICAgOCxcbiAgICBbKCkgPT4gRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUsIDBdLFxuICAgIFsoKSA9PiBFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUsIDBdLFxuXTtcbnZhciBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1SZXNwb25zZUV2ZW50ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0lXUlNSRSxcbiAgICB7XG4gICAgICAgIFtfc106IDEsXG4gICAgfSxcbiAgICBbX1BDLCBfSUNuXSxcbiAgICBbWygpID0+IEludm9rZVJlc3BvbnNlU3RyZWFtVXBkYXRlLCAwXSwgKCkgPT4gSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tcGxldGVFdmVudF0sXG5dO1xudmFyIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb24gPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfQUxWUCxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxOC0xMC0zMS9sYXllcnMve0xheWVyTmFtZX0vdmVyc2lvbnMve1ZlcnNpb25OdW1iZXJ9L3BvbGljeVwiLCAyMDFdLFxuICAgIH0sXG4gICAgKCkgPT4gQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvblJlcXVlc3QsXG4gICAgKCkgPT4gQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvblJlc3BvbnNlLFxuXTtcbnZhciBBZGRQZXJtaXNzaW9uID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0FQZCxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vcG9saWN5XCIsIDIwMV0sXG4gICAgfSxcbiAgICAoKSA9PiBBZGRQZXJtaXNzaW9uUmVxdWVzdCxcbiAgICAoKSA9PiBBZGRQZXJtaXNzaW9uUmVzcG9uc2UsXG5dO1xudmFyIENyZWF0ZUFsaWFzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0NBcixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vYWxpYXNlc1wiLCAyMDFdLFxuICAgIH0sXG4gICAgKCkgPT4gQ3JlYXRlQWxpYXNSZXF1ZXN0LFxuICAgICgpID0+IEFsaWFzQ29uZmlndXJhdGlvbixcbl07XG52YXIgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfQ0NTQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAyMC0wNC0yMi9jb2RlLXNpZ25pbmctY29uZmlnc1wiLCAyMDFdLFxuICAgIH0sXG4gICAgKCkgPT4gQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9DRVNNLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUE9TVFwiLCBcIi8yMDE1LTAzLTMxL2V2ZW50LXNvdXJjZS1tYXBwaW5nc1wiLCAyMDJdLFxuICAgIH0sXG4gICAgKCkgPT4gQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdCxcbiAgICAoKSA9PiBFdmVudFNvdXJjZU1hcHBpbmdDb25maWd1cmF0aW9uLFxuXTtcbnZhciBDcmVhdGVGdW5jdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9DRixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnNcIiwgMjAxXSxcbiAgICB9LFxuICAgICgpID0+IENyZWF0ZUZ1bmN0aW9uUmVxdWVzdCxcbiAgICAoKSA9PiBGdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG5dO1xudmFyIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0NGVUMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQT1NUXCIsIFwiLzIwMjEtMTAtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3VybFwiLCAyMDFdLFxuICAgIH0sXG4gICAgKCkgPT4gQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIERlbGV0ZUFsaWFzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0RBLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiREVMRVRFXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2FsaWFzZXMve05hbWV9XCIsIDIwNF0sXG4gICAgfSxcbiAgICAoKSA9PiBEZWxldGVBbGlhc1JlcXVlc3QsXG4gICAgKCkgPT4gX19Vbml0LFxuXTtcbnZhciBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9EQ1NDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiREVMRVRFXCIsIFwiLzIwMjAtMDQtMjIvY29kZS1zaWduaW5nLWNvbmZpZ3Mve0NvZGVTaWduaW5nQ29uZmlnQXJufVwiLCAyMDRdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVsZXRlQ29kZVNpZ25pbmdDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9ERVNNLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiREVMRVRFXCIsIFwiLzIwMTUtMDMtMzEvZXZlbnQtc291cmNlLW1hcHBpbmdzL3tVVUlEfVwiLCAyMDJdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdCxcbiAgICAoKSA9PiBFdmVudFNvdXJjZU1hcHBpbmdDb25maWd1cmF0aW9uLFxuXTtcbnZhciBEZWxldGVGdW5jdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9ERixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkRFTEVURVwiLCBcIi8yMDE1LTAzLTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfVwiLCAyMDRdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVsZXRlRnVuY3Rpb25SZXF1ZXN0LFxuICAgICgpID0+IF9fVW5pdCxcbl07XG52YXIgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9ERkNTQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkRFTEVURVwiLCBcIi8yMDIwLTA2LTMwL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9jb2RlLXNpZ25pbmctY29uZmlnXCIsIDIwNF0sXG4gICAgfSxcbiAgICAoKSA9PiBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBfX1VuaXQsXG5dO1xudmFyIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3kgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfREZDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiREVMRVRFXCIsIFwiLzIwMTctMTAtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2NvbmN1cnJlbmN5XCIsIDIwNF0sXG4gICAgfSxcbiAgICAoKSA9PiBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5UmVxdWVzdCxcbiAgICAoKSA9PiBfX1VuaXQsXG5dO1xudmFyIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfREZFSUMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJERUxFVEVcIiwgXCIvMjAxOS0wOS0yNS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vZXZlbnQtaW52b2tlLWNvbmZpZ1wiLCAyMDRdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gX19Vbml0LFxuXTtcbnZhciBEZWxldGVGdW5jdGlvblVybENvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9ERlVDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiREVMRVRFXCIsIFwiLzIwMjEtMTAtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3VybFwiLCAyMDRdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVsZXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IF9fVW5pdCxcbl07XG52YXIgRGVsZXRlTGF5ZXJWZXJzaW9uID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0RMVixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkRFTEVURVwiLCBcIi8yMDE4LTEwLTMxL2xheWVycy97TGF5ZXJOYW1lfS92ZXJzaW9ucy97VmVyc2lvbk51bWJlcn1cIiwgMjA0XSxcbiAgICB9LFxuICAgICgpID0+IERlbGV0ZUxheWVyVmVyc2lvblJlcXVlc3QsXG4gICAgKCkgPT4gX19Vbml0LFxuXTtcbnZhciBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0RQQ0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJERUxFVEVcIiwgXCIvMjAxOS0wOS0zMC9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vcHJvdmlzaW9uZWQtY29uY3VycmVuY3lcIiwgMjA0XSxcbiAgICB9LFxuICAgICgpID0+IERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IF9fVW5pdCxcbl07XG52YXIgR2V0QWNjb3VudFNldHRpbmdzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dBUyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE2LTA4LTE5L2FjY291bnQtc2V0dGluZ3NcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IEdldEFjY291bnRTZXR0aW5nc1JlcXVlc3QsXG4gICAgKCkgPT4gR2V0QWNjb3VudFNldHRpbmdzUmVzcG9uc2UsXG5dO1xudmFyIEdldEFsaWFzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dBLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2FsaWFzZXMve05hbWV9XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRBbGlhc1JlcXVlc3QsXG4gICAgKCkgPT4gQWxpYXNDb25maWd1cmF0aW9uLFxuXTtcbnZhciBHZXRDb2RlU2lnbmluZ0NvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HQ1NDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMjAtMDQtMjIvY29kZS1zaWduaW5nLWNvbmZpZ3Mve0NvZGVTaWduaW5nQ29uZmlnQXJufVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0Q29kZVNpZ25pbmdDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IEdldENvZGVTaWduaW5nQ29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIEdldEV2ZW50U291cmNlTWFwcGluZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HRVNNLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTUtMDMtMzEvZXZlbnQtc291cmNlLW1hcHBpbmdzL3tVVUlEfVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0RXZlbnRTb3VyY2VNYXBwaW5nUmVxdWVzdCxcbiAgICAoKSA9PiBFdmVudFNvdXJjZU1hcHBpbmdDb25maWd1cmF0aW9uLFxuXTtcbnZhciBHZXRGdW5jdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HRixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE1LTAzLTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25SZXF1ZXN0LFxuICAgICgpID0+IEdldEZ1bmN0aW9uUmVzcG9uc2UsXG5dO1xudmFyIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR0ZDU0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAyMC0wNi0zMC9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vY29kZS1zaWduaW5nLWNvbmZpZ1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlLFxuXTtcbnZhciBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5ID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dGQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE5LTA5LTMwL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9jb25jdXJyZW5jeVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25Db25jdXJyZW5jeVJlcXVlc3QsXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25Db25jdXJyZW5jeVJlc3BvbnNlLFxuXTtcbnZhciBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb24gPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR0ZDZSxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE1LTAzLTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9jb25maWd1cmF0aW9uXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25SZXF1ZXN0LFxuICAgICgpID0+IEZ1bmN0aW9uQ29uZmlndXJhdGlvbixcbl07XG52YXIgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HRkVJQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE5LTA5LTI1L2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9ldmVudC1pbnZva2UtY29uZmlnXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnLFxuXTtcbnZhciBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HRlJDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMjQtMDgtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3JlY3Vyc2lvbi1jb25maWdcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ1Jlc3BvbnNlLFxuXTtcbnZhciBHZXRGdW5jdGlvblVybENvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HRlVDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMjEtMTAtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3VybFwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0RnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IEdldEZ1bmN0aW9uVXJsQ29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIEdldExheWVyVmVyc2lvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HTFYsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAxOC0xMC0zMS9sYXllcnMve0xheWVyTmFtZX0vdmVyc2lvbnMve1ZlcnNpb25OdW1iZXJ9XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRMYXllclZlcnNpb25SZXF1ZXN0LFxuICAgICgpID0+IEdldExheWVyVmVyc2lvblJlc3BvbnNlLFxuXTtcbnZhciBHZXRMYXllclZlcnNpb25CeUFybiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HTFZCQSxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE4LTEwLTMxL2xheWVycz9maW5kPUxheWVyVmVyc2lvblwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gR2V0TGF5ZXJWZXJzaW9uQnlBcm5SZXF1ZXN0LFxuICAgICgpID0+IEdldExheWVyVmVyc2lvblJlc3BvbnNlLFxuXTtcbnZhciBHZXRMYXllclZlcnNpb25Qb2xpY3kgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR0xWUCxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE4LTEwLTMxL2xheWVycy97TGF5ZXJOYW1lfS92ZXJzaW9ucy97VmVyc2lvbk51bWJlcn0vcG9saWN5XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRMYXllclZlcnNpb25Qb2xpY3lSZXF1ZXN0LFxuICAgICgpID0+IEdldExheWVyVmVyc2lvblBvbGljeVJlc3BvbnNlLFxuXTtcbnZhciBHZXRQb2xpY3kgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR1AsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vcG9saWN5XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRQb2xpY3lSZXF1ZXN0LFxuICAgICgpID0+IEdldFBvbGljeVJlc3BvbnNlLFxuXTtcbnZhciBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dQQ0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAxOS0wOS0zMC9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vcHJvdmlzaW9uZWQtY29uY3VycmVuY3lcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdSZXNwb25zZSxcbl07XG52YXIgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR1JNQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDIxLTA3LTIwL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9ydW50aW1lLW1hbmFnZW1lbnQtY29uZmlnXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdSZXNwb25zZSxcbl07XG52YXIgSW52b2tlID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0ksXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQT1NUXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2ludm9jYXRpb25zXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBJbnZvY2F0aW9uUmVxdWVzdCxcbiAgICAoKSA9PiBJbnZvY2F0aW9uUmVzcG9uc2UsXG5dO1xudmFyIEludm9rZUFzeW5jID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0lBbixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNC0xMS0xMy9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vaW52b2tlLWFzeW5jXCIsIDIwMl0sXG4gICAgfSxcbiAgICAoKSA9PiBJbnZva2VBc3luY1JlcXVlc3QsXG4gICAgKCkgPT4gSW52b2tlQXN5bmNSZXNwb25zZSxcbl07XG52YXIgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0lXUlMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQT1NUXCIsIFwiLzIwMjEtMTEtMTUvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3Jlc3BvbnNlLXN0cmVhbWluZy1pbnZvY2F0aW9uc1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtUmVxdWVzdCxcbiAgICAoKSA9PiBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1SZXNwb25zZSxcbl07XG52YXIgTGlzdEFsaWFzZXMgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfTEFpLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2FsaWFzZXNcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IExpc3RBbGlhc2VzUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0QWxpYXNlc1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0Q29kZVNpZ25pbmdDb25maWdzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0xDU0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAyMC0wNC0yMi9jb2RlLXNpZ25pbmctY29uZmlnc1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gTGlzdENvZGVTaWduaW5nQ29uZmlnc1JlcXVlc3QsXG4gICAgKCkgPT4gTGlzdENvZGVTaWduaW5nQ29uZmlnc1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0RXZlbnRTb3VyY2VNYXBwaW5ncyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9MRVNNLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTUtMDMtMzEvZXZlbnQtc291cmNlLW1hcHBpbmdzXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc1JlcXVlc3QsXG4gICAgKCkgPT4gTGlzdEV2ZW50U291cmNlTWFwcGluZ3NSZXNwb25zZSxcbl07XG52YXIgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0xGRUlDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTktMDktMjUvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2V2ZW50LWludm9rZS1jb25maWcvbGlzdFwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NSZXNwb25zZSxcbl07XG52YXIgTGlzdEZ1bmN0aW9ucyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9MRmksXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnNcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IExpc3RGdW5jdGlvbnNSZXF1ZXN0LFxuICAgICgpID0+IExpc3RGdW5jdGlvbnNSZXNwb25zZSxcbl07XG52YXIgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfTEZCQ1NDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMjAtMDQtMjIvY29kZS1zaWduaW5nLWNvbmZpZ3Mve0NvZGVTaWduaW5nQ29uZmlnQXJufS9mdW5jdGlvbnNcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0RnVuY3Rpb25VcmxDb25maWdzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0xGVUMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAyMS0xMC0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vdXJsc1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc1JlcXVlc3QsXG4gICAgKCkgPT4gTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0TGF5ZXJzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0xMaSxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE4LTEwLTMxL2xheWVyc1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gTGlzdExheWVyc1JlcXVlc3QsXG4gICAgKCkgPT4gTGlzdExheWVyc1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0TGF5ZXJWZXJzaW9ucyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9MTFYsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJHRVRcIiwgXCIvMjAxOC0xMC0zMS9sYXllcnMve0xheWVyTmFtZX0vdmVyc2lvbnNcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IExpc3RMYXllclZlcnNpb25zUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0TGF5ZXJWZXJzaW9uc1Jlc3BvbnNlLFxuXTtcbnZhciBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3MgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfTFBDQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkdFVFwiLCBcIi8yMDE5LTA5LTMwL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9wcm92aXNpb25lZC1jb25jdXJyZW5jeT9MaXN0PUFMTFwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NSZXNwb25zZSxcbl07XG52YXIgTGlzdFRhZ3MgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfTFRpLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTctMDMtMzEvdGFncy97UmVzb3VyY2V9XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBMaXN0VGFnc1JlcXVlc3QsXG4gICAgKCkgPT4gTGlzdFRhZ3NSZXNwb25zZSxcbl07XG52YXIgTGlzdFZlcnNpb25zQnlGdW5jdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9MVkJGLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiR0VUXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3ZlcnNpb25zXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uUmVxdWVzdCxcbiAgICAoKSA9PiBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uUmVzcG9uc2UsXG5dO1xudmFyIFB1Ymxpc2hMYXllclZlcnNpb24gPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfUExWLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUE9TVFwiLCBcIi8yMDE4LTEwLTMxL2xheWVycy97TGF5ZXJOYW1lfS92ZXJzaW9uc1wiLCAyMDFdLFxuICAgIH0sXG4gICAgKCkgPT4gUHVibGlzaExheWVyVmVyc2lvblJlcXVlc3QsXG4gICAgKCkgPT4gUHVibGlzaExheWVyVmVyc2lvblJlc3BvbnNlLFxuXTtcbnZhciBQdWJsaXNoVmVyc2lvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9QVixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vdmVyc2lvbnNcIiwgMjAxXSxcbiAgICB9LFxuICAgICgpID0+IFB1Ymxpc2hWZXJzaW9uUmVxdWVzdCxcbiAgICAoKSA9PiBGdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG5dO1xudmFyIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfUEZDU0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAyMC0wNi0zMC9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vY29kZS1zaWduaW5nLWNvbmZpZ1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1Jlc3BvbnNlLFxuXTtcbnZhciBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5ID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX1BGQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBVVFwiLCBcIi8yMDE3LTEwLTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9jb25jdXJyZW5jeVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gUHV0RnVuY3Rpb25Db25jdXJyZW5jeVJlcXVlc3QsXG4gICAgKCkgPT4gQ29uY3VycmVuY3ksXG5dO1xudmFyIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfUEZFSUMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAxOS0wOS0yNS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vZXZlbnQtaW52b2tlLWNvbmZpZ1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyxcbl07XG52YXIgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWcgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfUEZSQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBVVFwiLCBcIi8yMDI0LTA4LTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9yZWN1cnNpb24tY29uZmlnXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdSZXNwb25zZSxcbl07XG52YXIgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9QUENDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUFVUXCIsIFwiLzIwMTktMDktMzAvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3Byb3Zpc2lvbmVkLWNvbmN1cnJlbmN5XCIsIDIwMl0sXG4gICAgfSxcbiAgICAoKSA9PiBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX1BSTUMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAyMS0wNy0yMC9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vcnVudGltZS1tYW5hZ2VtZW50LWNvbmZpZ1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnUmVzcG9uc2UsXG5dO1xudmFyIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb24gPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfUkxWUCxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkRFTEVURVwiLCBcIi8yMDE4LTEwLTMxL2xheWVycy97TGF5ZXJOYW1lfS92ZXJzaW9ucy97VmVyc2lvbk51bWJlcn0vcG9saWN5L3tTdGF0ZW1lbnRJZH1cIiwgMjA0XSxcbiAgICB9LFxuICAgICgpID0+IFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25SZXF1ZXN0LFxuICAgICgpID0+IF9fVW5pdCxcbl07XG52YXIgUmVtb3ZlUGVybWlzc2lvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9SUCxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIkRFTEVURVwiLCBcIi8yMDE1LTAzLTMxL2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9wb2xpY3kve1N0YXRlbWVudElkfVwiLCAyMDRdLFxuICAgIH0sXG4gICAgKCkgPT4gUmVtb3ZlUGVybWlzc2lvblJlcXVlc3QsXG4gICAgKCkgPT4gX19Vbml0LFxuXTtcbnZhciBUYWdSZXNvdXJjZSA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9UUixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvMjAxNy0wMy0zMS90YWdzL3tSZXNvdXJjZX1cIiwgMjA0XSxcbiAgICB9LFxuICAgICgpID0+IFRhZ1Jlc291cmNlUmVxdWVzdCxcbiAgICAoKSA9PiBfX1VuaXQsXG5dO1xudmFyIFVudGFnUmVzb3VyY2UgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfVVIsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJERUxFVEVcIiwgXCIvMjAxNy0wMy0zMS90YWdzL3tSZXNvdXJjZX1cIiwgMjA0XSxcbiAgICB9LFxuICAgICgpID0+IFVudGFnUmVzb3VyY2VSZXF1ZXN0LFxuICAgICgpID0+IF9fVW5pdCxcbl07XG52YXIgVXBkYXRlQWxpYXMgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfVUEsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vYWxpYXNlcy97TmFtZX1cIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IFVwZGF0ZUFsaWFzUmVxdWVzdCxcbiAgICAoKSA9PiBBbGlhc0NvbmZpZ3VyYXRpb24sXG5dO1xudmFyIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX1VDU0MsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAyMC0wNC0yMi9jb2RlLXNpZ25pbmctY29uZmlncy97Q29kZVNpZ25pbmdDb25maWdBcm59XCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ1JlcXVlc3QsXG4gICAgKCkgPT4gVXBkYXRlQ29kZVNpZ25pbmdDb25maWdSZXNwb25zZSxcbl07XG52YXIgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX1VFU00sXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAxNS0wMy0zMS9ldmVudC1zb3VyY2UtbWFwcGluZ3Mve1VVSUR9XCIsIDIwMl0sXG4gICAgfSxcbiAgICAoKSA9PiBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdSZXF1ZXN0LFxuICAgICgpID0+IEV2ZW50U291cmNlTWFwcGluZ0NvbmZpZ3VyYXRpb24sXG5dO1xudmFyIFVwZGF0ZUZ1bmN0aW9uQ29kZSA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9VRkMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQVVRcIiwgXCIvMjAxNS0wMy0zMS9mdW5jdGlvbnMve0Z1bmN0aW9uTmFtZX0vY29kZVwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdCxcbiAgICAoKSA9PiBGdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG5dO1xudmFyIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9VRkNwLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUFVUXCIsIFwiLzIwMTUtMDMtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L2NvbmZpZ3VyYXRpb25cIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvblJlcXVlc3QsXG4gICAgKCkgPT4gRnVuY3Rpb25Db25maWd1cmF0aW9uLFxuXTtcbnZhciBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX1VGRUlDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUE9TVFwiLCBcIi8yMDE5LTA5LTI1L2Z1bmN0aW9ucy97RnVuY3Rpb25OYW1lfS9ldmVudC1pbnZva2UtY29uZmlnXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnUmVxdWVzdCxcbiAgICAoKSA9PiBGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnLFxuXTtcbnZhciBVcGRhdGVGdW5jdGlvblVybENvbmZpZyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9VRlVDLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUFVUXCIsIFwiLzIwMjEtMTAtMzEvZnVuY3Rpb25zL3tGdW5jdGlvbk5hbWV9L3VybFwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gVXBkYXRlRnVuY3Rpb25VcmxDb25maWdSZXF1ZXN0LFxuICAgICgpID0+IFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnUmVzcG9uc2UsXG5dO1xuXG5jbGFzcyBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkFkZExheWVyVmVyc2lvblBlcm1pc3Npb25cIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZFwiKVxuICAgIC5zYyhBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgQWRkUGVybWlzc2lvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJBZGRQZXJtaXNzaW9uXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiQWRkUGVybWlzc2lvbkNvbW1hbmRcIilcbiAgICAuc2MoQWRkUGVybWlzc2lvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIENyZWF0ZUFsaWFzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkNyZWF0ZUFsaWFzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiQ3JlYXRlQWxpYXNDb21tYW5kXCIpXG4gICAgLnNjKENyZWF0ZUFsaWFzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoQ3JlYXRlQ29kZVNpZ25pbmdDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZFwiKVxuICAgIC5zYyhDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBDcmVhdGVGdW5jdGlvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJDcmVhdGVGdW5jdGlvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkNyZWF0ZUZ1bmN0aW9uQ29tbWFuZFwiKVxuICAgIC5zYyhDcmVhdGVGdW5jdGlvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkNyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgRGVsZXRlQWxpYXNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiRGVsZXRlQWxpYXNcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJEZWxldGVBbGlhc0NvbW1hbmRcIilcbiAgICAuc2MoRGVsZXRlQWxpYXMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkRlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhEZWxldGVDb2RlU2lnbmluZ0NvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kXCIpXG4gICAgLnNjKERlbGV0ZUV2ZW50U291cmNlTWFwcGluZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkRlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBEZWxldGVGdW5jdGlvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJEZWxldGVGdW5jdGlvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkRlbGV0ZUZ1bmN0aW9uQ29tbWFuZFwiKVxuICAgIC5zYyhEZWxldGVGdW5jdGlvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkRlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kXCIpXG4gICAgLnNjKERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3kpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiRGVsZXRlRnVuY3Rpb25VcmxDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoRGVsZXRlRnVuY3Rpb25VcmxDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBEZWxldGVMYXllclZlcnNpb25Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiRGVsZXRlTGF5ZXJWZXJzaW9uXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZFwiKVxuICAgIC5zYyhEZWxldGVMYXllclZlcnNpb24pXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkRlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldEFjY291bnRTZXR0aW5nc1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRcIilcbiAgICAuc2MoR2V0QWNjb3VudFNldHRpbmdzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0QWxpYXNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiR2V0QWxpYXNcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJHZXRBbGlhc0NvbW1hbmRcIilcbiAgICAuc2MoR2V0QWxpYXMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJHZXRDb2RlU2lnbmluZ0NvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRDb2RlU2lnbmluZ0NvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJHZXRFdmVudFNvdXJjZU1hcHBpbmdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kXCIpXG4gICAgLnNjKEdldEV2ZW50U291cmNlTWFwcGluZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRGdW5jdGlvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJHZXRGdW5jdGlvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldEZ1bmN0aW9uQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRGdW5jdGlvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiR2V0RnVuY3Rpb25Db25jdXJyZW5jeVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kXCIpXG4gICAgLnNjKEdldEZ1bmN0aW9uQ29uY3VycmVuY3kpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb24pXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJHZXRGdW5jdGlvblVybENvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRGdW5jdGlvblVybENvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldExheWVyVmVyc2lvbkJ5QXJuXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kXCIpXG4gICAgLnNjKEdldExheWVyVmVyc2lvbkJ5QXJuKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldExheWVyVmVyc2lvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldExheWVyVmVyc2lvbkNvbW1hbmRcIilcbiAgICAuc2MoR2V0TGF5ZXJWZXJzaW9uKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldExheWVyVmVyc2lvblBvbGljeVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRcIilcbiAgICAuc2MoR2V0TGF5ZXJWZXJzaW9uUG9saWN5KVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0UG9saWN5Q29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldFBvbGljeVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkdldFBvbGljeUNvbW1hbmRcIilcbiAgICAuc2MoR2V0UG9saWN5KVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgSW52b2tlQXN5bmNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiSW52b2tlQXN5bmNcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJJbnZva2VBc3luY0NvbW1hbmRcIilcbiAgICAuc2MoSW52b2tlQXN5bmMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBJbnZva2VDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiSW52b2tlXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiSW52b2tlQ29tbWFuZFwiKVxuICAgIC5zYyhJbnZva2UpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtXCIsIHtcbiAgICBldmVudFN0cmVhbToge1xuICAgICAgICBvdXRwdXQ6IHRydWUsXG4gICAgfSxcbn0pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kXCIpXG4gICAgLnNjKEludm9rZVdpdGhSZXNwb25zZVN0cmVhbSlcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RBbGlhc2VzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkxpc3RBbGlhc2VzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdEFsaWFzZXNDb21tYW5kXCIpXG4gICAgLnNjKExpc3RBbGlhc2VzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJMaXN0Q29kZVNpZ25pbmdDb25maWdzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRcIilcbiAgICAuc2MoTGlzdENvZGVTaWduaW5nQ29uZmlncylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkxpc3RFdmVudFNvdXJjZU1hcHBpbmdzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kXCIpXG4gICAgLnNjKExpc3RFdmVudFNvdXJjZU1hcHBpbmdzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRcIilcbiAgICAuc2MoTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBMaXN0RnVuY3Rpb25zQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkxpc3RGdW5jdGlvbnNcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJMaXN0RnVuY3Rpb25zQ29tbWFuZFwiKVxuICAgIC5zYyhMaXN0RnVuY3Rpb25zKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJMaXN0RnVuY3Rpb25VcmxDb25maWdzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRcIilcbiAgICAuc2MoTGlzdEZ1bmN0aW9uVXJsQ29uZmlncylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RMYXllcnNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiTGlzdExheWVyc1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkxpc3RMYXllcnNDb21tYW5kXCIpXG4gICAgLnNjKExpc3RMYXllcnMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJMaXN0TGF5ZXJWZXJzaW9uc1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIkxpc3RMYXllclZlcnNpb25zQ29tbWFuZFwiKVxuICAgIC5zYyhMaXN0TGF5ZXJWZXJzaW9ucylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kXCIpXG4gICAgLnNjKExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlncylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RUYWdzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIkxpc3RUYWdzXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdFRhZ3NDb21tYW5kXCIpXG4gICAgLnNjKExpc3RUYWdzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRcIilcbiAgICAuc2MoTGlzdFZlcnNpb25zQnlGdW5jdGlvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiUHVibGlzaExheWVyVmVyc2lvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kXCIpXG4gICAgLnNjKFB1Ymxpc2hMYXllclZlcnNpb24pXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBQdWJsaXNoVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJQdWJsaXNoVmVyc2lvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlB1Ymxpc2hWZXJzaW9uQ29tbWFuZFwiKVxuICAgIC5zYyhQdWJsaXNoVmVyc2lvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlB1dEZ1bmN0aW9uQ29uY3VycmVuY3lcIiwge30pXG4gICAgLm4oXCJMYW1iZGFDbGllbnRcIiwgXCJQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZFwiKVxuICAgIC5zYyhQdXRGdW5jdGlvbkNvbmN1cnJlbmN5KVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kXCIpXG4gICAgLnNjKFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRcIilcbiAgICAuc2MoUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiUmVtb3ZlUGVybWlzc2lvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlJlbW92ZVBlcm1pc3Npb25Db21tYW5kXCIpXG4gICAgLnNjKFJlbW92ZVBlcm1pc3Npb24pXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBUYWdSZXNvdXJjZUNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJUYWdSZXNvdXJjZVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlRhZ1Jlc291cmNlQ29tbWFuZFwiKVxuICAgIC5zYyhUYWdSZXNvdXJjZSlcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFVudGFnUmVzb3VyY2VDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJBV1NHaXJBcGlTZXJ2aWNlXCIsIFwiVW50YWdSZXNvdXJjZVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlVudGFnUmVzb3VyY2VDb21tYW5kXCIpXG4gICAgLnNjKFVudGFnUmVzb3VyY2UpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBVcGRhdGVBbGlhc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJVcGRhdGVBbGlhc1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlVwZGF0ZUFsaWFzQ29tbWFuZFwiKVxuICAgIC5zYyhVcGRhdGVBbGlhcylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ1wiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRcIilcbiAgICAuc2MoVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlVwZGF0ZUZ1bmN0aW9uQ29kZVwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRcIilcbiAgICAuc2MoVXBkYXRlRnVuY3Rpb25Db2RlKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvblwiLCB7fSlcbiAgICAubihcIkxhbWJkYUNsaWVudFwiLCBcIlVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRcIilcbiAgICAuc2MoVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIkFXU0dpckFwaVNlcnZpY2VcIiwgXCJVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRcIilcbiAgICAuc2MoVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiQVdTR2lyQXBpU2VydmljZVwiLCBcIlVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnXCIsIHt9KVxuICAgIC5uKFwiTGFtYmRhQ2xpZW50XCIsIFwiVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kXCIpXG4gICAgLnNjKFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY29uc3QgY29tbWFuZHMgPSB7XG4gICAgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gICAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gICAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICAgIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICAgIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgICBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gICAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICAgIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgICBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gICAgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICAgIEdldEFsaWFzQ29tbWFuZCxcbiAgICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gICAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgICBHZXRGdW5jdGlvbkNvbW1hbmQsXG4gICAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gICAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gICAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgICBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gICAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICAgIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gICAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kLFxuICAgIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmQsXG4gICAgR2V0UG9saWN5Q29tbWFuZCxcbiAgICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gICAgSW52b2tlQ29tbWFuZCxcbiAgICBJbnZva2VBc3luY0NvbW1hbmQsXG4gICAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZCxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gICAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQsXG4gICAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kLFxuICAgIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gICAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gICAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICAgIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICAgIExpc3RMYXllcnNDb21tYW5kLFxuICAgIExpc3RMYXllclZlcnNpb25zQ29tbWFuZCxcbiAgICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICAgIExpc3RUYWdzQ29tbWFuZCxcbiAgICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZCxcbiAgICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gICAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gICAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gICAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gICAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICAgIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICAgIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gICAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICAgIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICAgIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gICAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG59O1xuY2xhc3MgTGFtYmRhIGV4dGVuZHMgTGFtYmRhQ2xpZW50IHtcbn1cbnNtaXRoeUNsaWVudC5jcmVhdGVBZ2dyZWdhdGVkQ2xpZW50KGNvbW1hbmRzLCBMYW1iZGEpO1xuXG5jb25zdCBwYWdpbmF0ZUxpc3RBbGlhc2VzID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoTGFtYmRhQ2xpZW50LCBMaXN0QWxpYXNlc0NvbW1hbmQsIFwiTWFya2VyXCIsIFwiTmV4dE1hcmtlclwiLCBcIk1heEl0ZW1zXCIpO1xuXG5jb25zdCBwYWdpbmF0ZUxpc3RDb2RlU2lnbmluZ0NvbmZpZ3MgPSBjb3JlLmNyZWF0ZVBhZ2luYXRvcihMYW1iZGFDbGllbnQsIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLCBcIk1hcmtlclwiLCBcIk5leHRNYXJrZXJcIiwgXCJNYXhJdGVtc1wiKTtcblxuY29uc3QgcGFnaW5hdGVMaXN0RXZlbnRTb3VyY2VNYXBwaW5ncyA9IGNvcmUuY3JlYXRlUGFnaW5hdG9yKExhbWJkYUNsaWVudCwgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kLCBcIk1hcmtlclwiLCBcIk5leHRNYXJrZXJcIiwgXCJNYXhJdGVtc1wiKTtcblxuY29uc3QgcGFnaW5hdGVMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3MgPSBjb3JlLmNyZWF0ZVBhZ2luYXRvcihMYW1iZGFDbGllbnQsIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsIFwiTWFya2VyXCIsIFwiTmV4dE1hcmtlclwiLCBcIk1heEl0ZW1zXCIpO1xuXG5jb25zdCBwYWdpbmF0ZUxpc3RGdW5jdGlvblVybENvbmZpZ3MgPSBjb3JlLmNyZWF0ZVBhZ2luYXRvcihMYW1iZGFDbGllbnQsIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLCBcIk1hcmtlclwiLCBcIk5leHRNYXJrZXJcIiwgXCJNYXhJdGVtc1wiKTtcblxuY29uc3QgcGFnaW5hdGVMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZyA9IGNvcmUuY3JlYXRlUGFnaW5hdG9yKExhbWJkYUNsaWVudCwgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLCBcIk1hcmtlclwiLCBcIk5leHRNYXJrZXJcIiwgXCJNYXhJdGVtc1wiKTtcblxuY29uc3QgcGFnaW5hdGVMaXN0RnVuY3Rpb25zID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoTGFtYmRhQ2xpZW50LCBMaXN0RnVuY3Rpb25zQ29tbWFuZCwgXCJNYXJrZXJcIiwgXCJOZXh0TWFya2VyXCIsIFwiTWF4SXRlbXNcIik7XG5cbmNvbnN0IHBhZ2luYXRlTGlzdExheWVyVmVyc2lvbnMgPSBjb3JlLmNyZWF0ZVBhZ2luYXRvcihMYW1iZGFDbGllbnQsIExpc3RMYXllclZlcnNpb25zQ29tbWFuZCwgXCJNYXJrZXJcIiwgXCJOZXh0TWFya2VyXCIsIFwiTWF4SXRlbXNcIik7XG5cbmNvbnN0IHBhZ2luYXRlTGlzdExheWVycyA9IGNvcmUuY3JlYXRlUGFnaW5hdG9yKExhbWJkYUNsaWVudCwgTGlzdExheWVyc0NvbW1hbmQsIFwiTWFya2VyXCIsIFwiTmV4dE1hcmtlclwiLCBcIk1heEl0ZW1zXCIpO1xuXG5jb25zdCBwYWdpbmF0ZUxpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlncyA9IGNvcmUuY3JlYXRlUGFnaW5hdG9yKExhbWJkYUNsaWVudCwgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZCwgXCJNYXJrZXJcIiwgXCJOZXh0TWFya2VyXCIsIFwiTWF4SXRlbXNcIik7XG5cbmNvbnN0IHBhZ2luYXRlTGlzdFZlcnNpb25zQnlGdW5jdGlvbiA9IGNvcmUuY3JlYXRlUGFnaW5hdG9yKExhbWJkYUNsaWVudCwgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQsIFwiTWFya2VyXCIsIFwiTmV4dE1hcmtlclwiLCBcIk1heEl0ZW1zXCIpO1xuXG5jb25zdCBjaGVja1N0YXRlJDUgPSBhc3luYyAoY2xpZW50LCBpbnB1dCkgPT4ge1xuICAgIGxldCByZWFzb247XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQoaW5wdXQpKTtcbiAgICAgICAgcmVhc29uID0gcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuQ29tcGFyYXRvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LlN0YXRlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZXR1cm5Db21wYXJhdG9yKCkgPT09IFwiQWN0aXZlXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5TVUNDRVNTLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuU3RhdGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJldHVybkNvbXBhcmF0b3IoKSA9PT0gXCJGYWlsZWRcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLkZBSUxVUkUsIHJlYXNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVybkNvbXBhcmF0b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5TdGF0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIlBlbmRpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgcmVhc29uID0gZXhjZXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5SRVRSWSwgcmVhc29uIH07XG59O1xuY29uc3Qgd2FpdEZvckZ1bmN0aW9uQWN0aXZlID0gYXN5bmMgKHBhcmFtcywgaW5wdXQpID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlRGVmYXVsdHMgPSB7IG1pbkRlbGF5OiA1LCBtYXhEZWxheTogMzAwIH07XG4gICAgcmV0dXJuIHV0aWxXYWl0ZXIuY3JlYXRlV2FpdGVyKHsgLi4uc2VydmljZURlZmF1bHRzLCAuLi5wYXJhbXMgfSwgaW5wdXQsIGNoZWNrU3RhdGUkNSk7XG59O1xuY29uc3Qgd2FpdFVudGlsRnVuY3Rpb25BY3RpdmUgPSBhc3luYyAocGFyYW1zLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VEZWZhdWx0cyA9IHsgbWluRGVsYXk6IDUsIG1heERlbGF5OiAzMDAgfTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1dGlsV2FpdGVyLmNyZWF0ZVdhaXRlcih7IC4uLnNlcnZpY2VEZWZhdWx0cywgLi4ucGFyYW1zIH0sIGlucHV0LCBjaGVja1N0YXRlJDUpO1xuICAgIHJldHVybiB1dGlsV2FpdGVyLmNoZWNrRXhjZXB0aW9ucyhyZXN1bHQpO1xufTtcblxuY29uc3QgY2hlY2tTdGF0ZSQ0ID0gYXN5bmMgKGNsaWVudCwgaW5wdXQpID0+IHtcbiAgICBsZXQgcmVhc29uO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRGdW5jdGlvbkNvbW1hbmQoaW5wdXQpKTtcbiAgICAgICAgcmVhc29uID0gcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuQ29tcGFyYXRvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LkNvbmZpZ3VyYXRpb24uU3RhdGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJldHVybkNvbXBhcmF0b3IoKSA9PT0gXCJBY3RpdmVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlNVQ0NFU1MsIHJlYXNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVybkNvbXBhcmF0b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5Db25maWd1cmF0aW9uLlN0YXRlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZXR1cm5Db21wYXJhdG9yKCkgPT09IFwiRmFpbGVkXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5GQUlMVVJFLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuQ29uZmlndXJhdGlvbi5TdGF0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIlBlbmRpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgcmVhc29uID0gZXhjZXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5SRVRSWSwgcmVhc29uIH07XG59O1xuY29uc3Qgd2FpdEZvckZ1bmN0aW9uQWN0aXZlVjIgPSBhc3luYyAocGFyYW1zLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VEZWZhdWx0cyA9IHsgbWluRGVsYXk6IDEsIG1heERlbGF5OiAzMDAgfTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jcmVhdGVXYWl0ZXIoeyAuLi5zZXJ2aWNlRGVmYXVsdHMsIC4uLnBhcmFtcyB9LCBpbnB1dCwgY2hlY2tTdGF0ZSQ0KTtcbn07XG5jb25zdCB3YWl0VW50aWxGdW5jdGlvbkFjdGl2ZVYyID0gYXN5bmMgKHBhcmFtcywgaW5wdXQpID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlRGVmYXVsdHMgPSB7IG1pbkRlbGF5OiAxLCBtYXhEZWxheTogMzAwIH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbFdhaXRlci5jcmVhdGVXYWl0ZXIoeyAuLi5zZXJ2aWNlRGVmYXVsdHMsIC4uLnBhcmFtcyB9LCBpbnB1dCwgY2hlY2tTdGF0ZSQ0KTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jaGVja0V4Y2VwdGlvbnMocmVzdWx0KTtcbn07XG5cbmNvbnN0IGNoZWNrU3RhdGUkMyA9IGFzeW5jIChjbGllbnQsIGlucHV0KSA9PiB7XG4gICAgbGV0IHJlYXNvbjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgR2V0RnVuY3Rpb25Db21tYW5kKGlucHV0KSk7XG4gICAgICAgIHJlYXNvbiA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHV0aWxXYWl0ZXIuV2FpdGVyU3RhdGUuU1VDQ0VTUywgcmVhc29uIH07XG4gICAgfVxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgcmVhc29uID0gZXhjZXB0aW9uO1xuICAgICAgICBpZiAoZXhjZXB0aW9uLm5hbWUgJiYgZXhjZXB0aW9uLm5hbWUgPT0gXCJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5SRVRSWSwgcmVhc29uIH07XG59O1xuY29uc3Qgd2FpdEZvckZ1bmN0aW9uRXhpc3RzID0gYXN5bmMgKHBhcmFtcywgaW5wdXQpID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlRGVmYXVsdHMgPSB7IG1pbkRlbGF5OiAxLCBtYXhEZWxheTogMjAgfTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jcmVhdGVXYWl0ZXIoeyAuLi5zZXJ2aWNlRGVmYXVsdHMsIC4uLnBhcmFtcyB9LCBpbnB1dCwgY2hlY2tTdGF0ZSQzKTtcbn07XG5jb25zdCB3YWl0VW50aWxGdW5jdGlvbkV4aXN0cyA9IGFzeW5jIChwYXJhbXMsIGlucHV0KSA9PiB7XG4gICAgY29uc3Qgc2VydmljZURlZmF1bHRzID0geyBtaW5EZWxheTogMSwgbWF4RGVsYXk6IDIwIH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbFdhaXRlci5jcmVhdGVXYWl0ZXIoeyAuLi5zZXJ2aWNlRGVmYXVsdHMsIC4uLnBhcmFtcyB9LCBpbnB1dCwgY2hlY2tTdGF0ZSQzKTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jaGVja0V4Y2VwdGlvbnMocmVzdWx0KTtcbn07XG5cbmNvbnN0IGNoZWNrU3RhdGUkMiA9IGFzeW5jIChjbGllbnQsIGlucHV0KSA9PiB7XG4gICAgbGV0IHJlYXNvbjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZChpbnB1dCkpO1xuICAgICAgICByZWFzb24gPSByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuTGFzdFVwZGF0ZVN0YXR1cztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIlN1Y2Nlc3NmdWxcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlNVQ0NFU1MsIHJlYXNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVybkNvbXBhcmF0b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5MYXN0VXBkYXRlU3RhdHVzO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZXR1cm5Db21wYXJhdG9yKCkgPT09IFwiRmFpbGVkXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5GQUlMVVJFLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuTGFzdFVwZGF0ZVN0YXR1cztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIkluUHJvZ3Jlc3NcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgcmVhc29uID0gZXhjZXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5SRVRSWSwgcmVhc29uIH07XG59O1xuY29uc3Qgd2FpdEZvckZ1bmN0aW9uVXBkYXRlZCA9IGFzeW5jIChwYXJhbXMsIGlucHV0KSA9PiB7XG4gICAgY29uc3Qgc2VydmljZURlZmF1bHRzID0geyBtaW5EZWxheTogNSwgbWF4RGVsYXk6IDMwMCB9O1xuICAgIHJldHVybiB1dGlsV2FpdGVyLmNyZWF0ZVdhaXRlcih7IC4uLnNlcnZpY2VEZWZhdWx0cywgLi4ucGFyYW1zIH0sIGlucHV0LCBjaGVja1N0YXRlJDIpO1xufTtcbmNvbnN0IHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZCA9IGFzeW5jIChwYXJhbXMsIGlucHV0KSA9PiB7XG4gICAgY29uc3Qgc2VydmljZURlZmF1bHRzID0geyBtaW5EZWxheTogNSwgbWF4RGVsYXk6IDMwMCB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHV0aWxXYWl0ZXIuY3JlYXRlV2FpdGVyKHsgLi4uc2VydmljZURlZmF1bHRzLCAuLi5wYXJhbXMgfSwgaW5wdXQsIGNoZWNrU3RhdGUkMik7XG4gICAgcmV0dXJuIHV0aWxXYWl0ZXIuY2hlY2tFeGNlcHRpb25zKHJlc3VsdCk7XG59O1xuXG5jb25zdCBjaGVja1N0YXRlJDEgPSBhc3luYyAoY2xpZW50LCBpbnB1dCkgPT4ge1xuICAgIGxldCByZWFzb247XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldEZ1bmN0aW9uQ29tbWFuZChpbnB1dCkpO1xuICAgICAgICByZWFzb24gPSByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuQ29uZmlndXJhdGlvbi5MYXN0VXBkYXRlU3RhdHVzO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZXR1cm5Db21wYXJhdG9yKCkgPT09IFwiU3VjY2Vzc2Z1bFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHV0aWxXYWl0ZXIuV2FpdGVyU3RhdGUuU1VDQ0VTUywgcmVhc29uIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuQ29tcGFyYXRvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LkNvbmZpZ3VyYXRpb24uTGFzdFVwZGF0ZVN0YXR1cztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIkZhaWxlZFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHV0aWxXYWl0ZXIuV2FpdGVyU3RhdGUuRkFJTFVSRSwgcmVhc29uIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuQ29tcGFyYXRvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LkNvbmZpZ3VyYXRpb24uTGFzdFVwZGF0ZVN0YXR1cztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIkluUHJvZ3Jlc3NcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgcmVhc29uID0gZXhjZXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdXRpbFdhaXRlci5XYWl0ZXJTdGF0ZS5SRVRSWSwgcmVhc29uIH07XG59O1xuY29uc3Qgd2FpdEZvckZ1bmN0aW9uVXBkYXRlZFYyID0gYXN5bmMgKHBhcmFtcywgaW5wdXQpID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlRGVmYXVsdHMgPSB7IG1pbkRlbGF5OiAxLCBtYXhEZWxheTogMzAwIH07XG4gICAgcmV0dXJuIHV0aWxXYWl0ZXIuY3JlYXRlV2FpdGVyKHsgLi4uc2VydmljZURlZmF1bHRzLCAuLi5wYXJhbXMgfSwgaW5wdXQsIGNoZWNrU3RhdGUkMSk7XG59O1xuY29uc3Qgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIgPSBhc3luYyAocGFyYW1zLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VEZWZhdWx0cyA9IHsgbWluRGVsYXk6IDEsIG1heERlbGF5OiAzMDAgfTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1dGlsV2FpdGVyLmNyZWF0ZVdhaXRlcih7IC4uLnNlcnZpY2VEZWZhdWx0cywgLi4ucGFyYW1zIH0sIGlucHV0LCBjaGVja1N0YXRlJDEpO1xuICAgIHJldHVybiB1dGlsV2FpdGVyLmNoZWNrRXhjZXB0aW9ucyhyZXN1bHQpO1xufTtcblxuY29uc3QgY2hlY2tTdGF0ZSA9IGFzeW5jIChjbGllbnQsIGlucHV0KSA9PiB7XG4gICAgbGV0IHJlYXNvbjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZChpbnB1dCkpO1xuICAgICAgICByZWFzb24gPSByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5Db21wYXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuU3RhdGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJldHVybkNvbXBhcmF0b3IoKSA9PT0gXCJBY3RpdmVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlNVQ0NFU1MsIHJlYXNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVybkNvbXBhcmF0b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5TdGF0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmV0dXJuQ29tcGFyYXRvcigpID09PSBcIkZhaWxlZFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHV0aWxXYWl0ZXIuV2FpdGVyU3RhdGUuRkFJTFVSRSwgcmVhc29uIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuQ29tcGFyYXRvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LlN0YXRlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZXR1cm5Db21wYXJhdG9yKCkgPT09IFwiUGVuZGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHV0aWxXYWl0ZXIuV2FpdGVyU3RhdGUuUkVUUlksIHJlYXNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICB9XG4gICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xuICAgICAgICByZWFzb24gPSBleGNlcHRpb247XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXRlOiB1dGlsV2FpdGVyLldhaXRlclN0YXRlLlJFVFJZLCByZWFzb24gfTtcbn07XG5jb25zdCB3YWl0Rm9yUHVibGlzaGVkVmVyc2lvbkFjdGl2ZSA9IGFzeW5jIChwYXJhbXMsIGlucHV0KSA9PiB7XG4gICAgY29uc3Qgc2VydmljZURlZmF1bHRzID0geyBtaW5EZWxheTogNSwgbWF4RGVsYXk6IDE1NjAgfTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jcmVhdGVXYWl0ZXIoeyAuLi5zZXJ2aWNlRGVmYXVsdHMsIC4uLnBhcmFtcyB9LCBpbnB1dCwgY2hlY2tTdGF0ZSk7XG59O1xuY29uc3Qgd2FpdFVudGlsUHVibGlzaGVkVmVyc2lvbkFjdGl2ZSA9IGFzeW5jIChwYXJhbXMsIGlucHV0KSA9PiB7XG4gICAgY29uc3Qgc2VydmljZURlZmF1bHRzID0geyBtaW5EZWxheTogNSwgbWF4RGVsYXk6IDE1NjAgfTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1dGlsV2FpdGVyLmNyZWF0ZVdhaXRlcih7IC4uLnNlcnZpY2VEZWZhdWx0cywgLi4ucGFyYW1zIH0sIGlucHV0LCBjaGVja1N0YXRlKTtcbiAgICByZXR1cm4gdXRpbFdhaXRlci5jaGVja0V4Y2VwdGlvbnMocmVzdWx0KTtcbn07XG5cbmNvbnN0IFRocm90dGxlUmVhc29uID0ge1xuICAgIENhbGxlclJhdGVMaW1pdEV4Y2VlZGVkOiBcIkNhbGxlclJhdGVMaW1pdEV4Y2VlZGVkXCIsXG4gICAgQ29uY3VycmVudEludm9jYXRpb25MaW1pdEV4Y2VlZGVkOiBcIkNvbmN1cnJlbnRJbnZvY2F0aW9uTGltaXRFeGNlZWRlZFwiLFxuICAgIENvbmN1cnJlbnRTbmFwc2hvdENyZWF0ZUxpbWl0RXhjZWVkZWQ6IFwiQ29uY3VycmVudFNuYXBzaG90Q3JlYXRlTGltaXRFeGNlZWRlZFwiLFxuICAgIEZ1bmN0aW9uSW52b2NhdGlvblJhdGVMaW1pdEV4Y2VlZGVkOiBcIkZ1bmN0aW9uSW52b2NhdGlvblJhdGVMaW1pdEV4Y2VlZGVkXCIsXG4gICAgUmVzZXJ2ZWRGdW5jdGlvbkNvbmN1cnJlbnRJbnZvY2F0aW9uTGltaXRFeGNlZWRlZDogXCJSZXNlcnZlZEZ1bmN0aW9uQ29uY3VycmVudEludm9jYXRpb25MaW1pdEV4Y2VlZGVkXCIsXG4gICAgUmVzZXJ2ZWRGdW5jdGlvbkludm9jYXRpb25SYXRlTGltaXRFeGNlZWRlZDogXCJSZXNlcnZlZEZ1bmN0aW9uSW52b2NhdGlvblJhdGVMaW1pdEV4Y2VlZGVkXCIsXG59O1xuY29uc3QgRnVuY3Rpb25VcmxBdXRoVHlwZSA9IHtcbiAgICBBV1NfSUFNOiBcIkFXU19JQU1cIixcbiAgICBOT05FOiBcIk5PTkVcIixcbn07XG5jb25zdCBLYWZrYVNjaGVtYVJlZ2lzdHJ5QXV0aFR5cGUgPSB7XG4gICAgQkFTSUNfQVVUSDogXCJCQVNJQ19BVVRIXCIsXG4gICAgQ0xJRU5UX0NFUlRJRklDQVRFX1RMU19BVVRIOiBcIkNMSUVOVF9DRVJUSUZJQ0FURV9UTFNfQVVUSFwiLFxuICAgIFNFUlZFUl9ST09UX0NBX0NFUlRJRklDQVRFOiBcIlNFUlZFUl9ST09UX0NBX0NFUlRJRklDQVRFXCIsXG59O1xuY29uc3QgU2NoZW1hUmVnaXN0cnlFdmVudFJlY29yZEZvcm1hdCA9IHtcbiAgICBKU09OOiBcIkpTT05cIixcbiAgICBTT1VSQ0U6IFwiU09VUkNFXCIsXG59O1xuY29uc3QgS2Fma2FTY2hlbWFWYWxpZGF0aW9uQXR0cmlidXRlID0ge1xuICAgIEtFWTogXCJLRVlcIixcbiAgICBWQUxVRTogXCJWQUxVRVwiLFxufTtcbmNvbnN0IEFwcGxpY2F0aW9uTG9nTGV2ZWwgPSB7XG4gICAgRGVidWc6IFwiREVCVUdcIixcbiAgICBFcnJvcjogXCJFUlJPUlwiLFxuICAgIEZhdGFsOiBcIkZBVEFMXCIsXG4gICAgSW5mbzogXCJJTkZPXCIsXG4gICAgVHJhY2U6IFwiVFJBQ0VcIixcbiAgICBXYXJuOiBcIldBUk5cIixcbn07XG5jb25zdCBBcmNoaXRlY3R1cmUgPSB7XG4gICAgYXJtNjQ6IFwiYXJtNjRcIixcbiAgICB4ODZfNjQ6IFwieDg2XzY0XCIsXG59O1xuY29uc3QgQ29kZVNpZ25pbmdQb2xpY3kgPSB7XG4gICAgRW5mb3JjZTogXCJFbmZvcmNlXCIsXG4gICAgV2FybjogXCJXYXJuXCIsXG59O1xuY29uc3QgRnVsbERvY3VtZW50ID0ge1xuICAgIERlZmF1bHQ6IFwiRGVmYXVsdFwiLFxuICAgIFVwZGF0ZUxvb2t1cDogXCJVcGRhdGVMb29rdXBcIixcbn07XG5jb25zdCBGdW5jdGlvblJlc3BvbnNlVHlwZSA9IHtcbiAgICBSZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogXCJSZXBvcnRCYXRjaEl0ZW1GYWlsdXJlc1wiLFxufTtcbmNvbnN0IEV2ZW50U291cmNlTWFwcGluZ01ldHJpYyA9IHtcbiAgICBFdmVudENvdW50OiBcIkV2ZW50Q291bnRcIixcbn07XG5jb25zdCBFbmRQb2ludFR5cGUgPSB7XG4gICAgS0FGS0FfQk9PVFNUUkFQX1NFUlZFUlM6IFwiS0FGS0FfQk9PVFNUUkFQX1NFUlZFUlNcIixcbn07XG5jb25zdCBTb3VyY2VBY2Nlc3NUeXBlID0ge1xuICAgIEJBU0lDX0FVVEg6IFwiQkFTSUNfQVVUSFwiLFxuICAgIENMSUVOVF9DRVJUSUZJQ0FURV9UTFNfQVVUSDogXCJDTElFTlRfQ0VSVElGSUNBVEVfVExTX0FVVEhcIixcbiAgICBTQVNMX1NDUkFNXzI1Nl9BVVRIOiBcIlNBU0xfU0NSQU1fMjU2X0FVVEhcIixcbiAgICBTQVNMX1NDUkFNXzUxMl9BVVRIOiBcIlNBU0xfU0NSQU1fNTEyX0FVVEhcIixcbiAgICBTRVJWRVJfUk9PVF9DQV9DRVJUSUZJQ0FURTogXCJTRVJWRVJfUk9PVF9DQV9DRVJUSUZJQ0FURVwiLFxuICAgIFZJUlRVQUxfSE9TVDogXCJWSVJUVUFMX0hPU1RcIixcbiAgICBWUENfU0VDVVJJVFlfR1JPVVA6IFwiVlBDX1NFQ1VSSVRZX0dST1VQXCIsXG4gICAgVlBDX1NVQk5FVDogXCJWUENfU1VCTkVUXCIsXG59O1xuY29uc3QgRXZlbnRTb3VyY2VQb3NpdGlvbiA9IHtcbiAgICBBVF9USU1FU1RBTVA6IFwiQVRfVElNRVNUQU1QXCIsXG4gICAgTEFURVNUOiBcIkxBVEVTVFwiLFxuICAgIFRSSU1fSE9SSVpPTjogXCJUUklNX0hPUklaT05cIixcbn07XG5jb25zdCBMb2dGb3JtYXQgPSB7XG4gICAgSnNvbjogXCJKU09OXCIsXG4gICAgVGV4dDogXCJUZXh0XCIsXG59O1xuY29uc3QgU3lzdGVtTG9nTGV2ZWwgPSB7XG4gICAgRGVidWc6IFwiREVCVUdcIixcbiAgICBJbmZvOiBcIklORk9cIixcbiAgICBXYXJuOiBcIldBUk5cIixcbn07XG5jb25zdCBQYWNrYWdlVHlwZSA9IHtcbiAgICBJbWFnZTogXCJJbWFnZVwiLFxuICAgIFppcDogXCJaaXBcIixcbn07XG5jb25zdCBSdW50aW1lID0ge1xuICAgIGRvdG5ldDY6IFwiZG90bmV0NlwiLFxuICAgIGRvdG5ldDg6IFwiZG90bmV0OFwiLFxuICAgIGRvdG5ldGNvcmUxMDogXCJkb3RuZXRjb3JlMS4wXCIsXG4gICAgZG90bmV0Y29yZTIwOiBcImRvdG5ldGNvcmUyLjBcIixcbiAgICBkb3RuZXRjb3JlMjE6IFwiZG90bmV0Y29yZTIuMVwiLFxuICAgIGRvdG5ldGNvcmUzMTogXCJkb3RuZXRjb3JlMy4xXCIsXG4gICAgZ28xeDogXCJnbzEueFwiLFxuICAgIGphdmExMTogXCJqYXZhMTFcIixcbiAgICBqYXZhMTc6IFwiamF2YTE3XCIsXG4gICAgamF2YTIxOiBcImphdmEyMVwiLFxuICAgIGphdmEyNTogXCJqYXZhMjVcIixcbiAgICBqYXZhODogXCJqYXZhOFwiLFxuICAgIGphdmE4YWwyOiBcImphdmE4LmFsMlwiLFxuICAgIG5vZGVqczogXCJub2RlanNcIixcbiAgICBub2RlanMxMHg6IFwibm9kZWpzMTAueFwiLFxuICAgIG5vZGVqczEyeDogXCJub2RlanMxMi54XCIsXG4gICAgbm9kZWpzMTR4OiBcIm5vZGVqczE0LnhcIixcbiAgICBub2RlanMxNng6IFwibm9kZWpzMTYueFwiLFxuICAgIG5vZGVqczE4eDogXCJub2RlanMxOC54XCIsXG4gICAgbm9kZWpzMjB4OiBcIm5vZGVqczIwLnhcIixcbiAgICBub2RlanMyMng6IFwibm9kZWpzMjIueFwiLFxuICAgIG5vZGVqczI0eDogXCJub2RlanMyNC54XCIsXG4gICAgbm9kZWpzNDM6IFwibm9kZWpzNC4zXCIsXG4gICAgbm9kZWpzNDNlZGdlOiBcIm5vZGVqczQuMy1lZGdlXCIsXG4gICAgbm9kZWpzNjEwOiBcIm5vZGVqczYuMTBcIixcbiAgICBub2RlanM4MTA6IFwibm9kZWpzOC4xMFwiLFxuICAgIHByb3ZpZGVkOiBcInByb3ZpZGVkXCIsXG4gICAgcHJvdmlkZWRhbDI6IFwicHJvdmlkZWQuYWwyXCIsXG4gICAgcHJvdmlkZWRhbDIwMjM6IFwicHJvdmlkZWQuYWwyMDIzXCIsXG4gICAgcHl0aG9uMjc6IFwicHl0aG9uMi43XCIsXG4gICAgcHl0aG9uMzEwOiBcInB5dGhvbjMuMTBcIixcbiAgICBweXRob24zMTE6IFwicHl0aG9uMy4xMVwiLFxuICAgIHB5dGhvbjMxMjogXCJweXRob24zLjEyXCIsXG4gICAgcHl0aG9uMzEzOiBcInB5dGhvbjMuMTNcIixcbiAgICBweXRob24zMTQ6IFwicHl0aG9uMy4xNFwiLFxuICAgIHB5dGhvbjM2OiBcInB5dGhvbjMuNlwiLFxuICAgIHB5dGhvbjM3OiBcInB5dGhvbjMuN1wiLFxuICAgIHB5dGhvbjM4OiBcInB5dGhvbjMuOFwiLFxuICAgIHB5dGhvbjM5OiBcInB5dGhvbjMuOVwiLFxuICAgIHJ1YnkyNTogXCJydWJ5Mi41XCIsXG4gICAgcnVieTI3OiBcInJ1YnkyLjdcIixcbiAgICBydWJ5MzI6IFwicnVieTMuMlwiLFxuICAgIHJ1YnkzMzogXCJydWJ5My4zXCIsXG4gICAgcnVieTM0OiBcInJ1YnkzLjRcIixcbn07XG5jb25zdCBTbmFwU3RhcnRBcHBseU9uID0ge1xuICAgIE5vbmU6IFwiTm9uZVwiLFxuICAgIFB1Ymxpc2hlZFZlcnNpb25zOiBcIlB1Ymxpc2hlZFZlcnNpb25zXCIsXG59O1xuY29uc3QgVGVuYW50SXNvbGF0aW9uTW9kZSA9IHtcbiAgICBQRVJfVEVOQU5UOiBcIlBFUl9URU5BTlRcIixcbn07XG5jb25zdCBUcmFjaW5nTW9kZSA9IHtcbiAgICBBY3RpdmU6IFwiQWN0aXZlXCIsXG4gICAgUGFzc1Rocm91Z2g6IFwiUGFzc1Rocm91Z2hcIixcbn07XG5jb25zdCBMYXN0VXBkYXRlU3RhdHVzID0ge1xuICAgIEZhaWxlZDogXCJGYWlsZWRcIixcbiAgICBJblByb2dyZXNzOiBcIkluUHJvZ3Jlc3NcIixcbiAgICBTdWNjZXNzZnVsOiBcIlN1Y2Nlc3NmdWxcIixcbn07XG5jb25zdCBMYXN0VXBkYXRlU3RhdHVzUmVhc29uQ29kZSA9IHtcbiAgICBEaXNhYmxlZEtNU0tleTogXCJEaXNhYmxlZEtNU0tleVwiLFxuICAgIEVGU0lPRXJyb3I6IFwiRUZTSU9FcnJvclwiLFxuICAgIEVGU01vdW50Q29ubmVjdGl2aXR5RXJyb3I6IFwiRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvclwiLFxuICAgIEVGU01vdW50RmFpbHVyZTogXCJFRlNNb3VudEZhaWx1cmVcIixcbiAgICBFRlNNb3VudFRpbWVvdXQ6IFwiRUZTTW91bnRUaW1lb3V0XCIsXG4gICAgRW5pTGltaXRFeGNlZWRlZDogXCJFbmlMaW1pdEV4Y2VlZGVkXCIsXG4gICAgRnVuY3Rpb25FcnJvcjogXCJGdW5jdGlvbkVycm9yXCIsXG4gICAgSW1hZ2VBY2Nlc3NEZW5pZWQ6IFwiSW1hZ2VBY2Nlc3NEZW5pZWRcIixcbiAgICBJbWFnZURlbGV0ZWQ6IFwiSW1hZ2VEZWxldGVkXCIsXG4gICAgSW5zdWZmaWNpZW50Um9sZVBlcm1pc3Npb25zOiBcIkluc3VmZmljaWVudFJvbGVQZXJtaXNzaW9uc1wiLFxuICAgIEludGVybmFsRXJyb3I6IFwiSW50ZXJuYWxFcnJvclwiLFxuICAgIEludmFsaWRDb25maWd1cmF0aW9uOiBcIkludmFsaWRDb25maWd1cmF0aW9uXCIsXG4gICAgSW52YWxpZEltYWdlOiBcIkludmFsaWRJbWFnZVwiLFxuICAgIEludmFsaWRSdW50aW1lOiBcIkludmFsaWRSdW50aW1lXCIsXG4gICAgSW52YWxpZFNlY3VyaXR5R3JvdXA6IFwiSW52YWxpZFNlY3VyaXR5R3JvdXBcIixcbiAgICBJbnZhbGlkU3RhdGVLTVNLZXk6IFwiSW52YWxpZFN0YXRlS01TS2V5XCIsXG4gICAgSW52YWxpZFN1Ym5ldDogXCJJbnZhbGlkU3VibmV0XCIsXG4gICAgSW52YWxpZFppcEZpbGVFeGNlcHRpb246IFwiSW52YWxpZFppcEZpbGVFeGNlcHRpb25cIixcbiAgICBLTVNLZXlBY2Nlc3NEZW5pZWQ6IFwiS01TS2V5QWNjZXNzRGVuaWVkXCIsXG4gICAgS01TS2V5Tm90Rm91bmQ6IFwiS01TS2V5Tm90Rm91bmRcIixcbiAgICBTdWJuZXRPdXRPZklQQWRkcmVzc2VzOiBcIlN1Ym5ldE91dE9mSVBBZGRyZXNzZXNcIixcbn07XG5jb25zdCBTbmFwU3RhcnRPcHRpbWl6YXRpb25TdGF0dXMgPSB7XG4gICAgT2ZmOiBcIk9mZlwiLFxuICAgIE9uOiBcIk9uXCIsXG59O1xuY29uc3QgU3RhdGUgPSB7XG4gICAgQWN0aXZlOiBcIkFjdGl2ZVwiLFxuICAgIEZhaWxlZDogXCJGYWlsZWRcIixcbiAgICBJbmFjdGl2ZTogXCJJbmFjdGl2ZVwiLFxuICAgIFBlbmRpbmc6IFwiUGVuZGluZ1wiLFxufTtcbmNvbnN0IFN0YXRlUmVhc29uQ29kZSA9IHtcbiAgICBDcmVhdGluZzogXCJDcmVhdGluZ1wiLFxuICAgIERpc2FibGVkS01TS2V5OiBcIkRpc2FibGVkS01TS2V5XCIsXG4gICAgRUZTSU9FcnJvcjogXCJFRlNJT0Vycm9yXCIsXG4gICAgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvcjogXCJFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXCIsXG4gICAgRUZTTW91bnRGYWlsdXJlOiBcIkVGU01vdW50RmFpbHVyZVwiLFxuICAgIEVGU01vdW50VGltZW91dDogXCJFRlNNb3VudFRpbWVvdXRcIixcbiAgICBFbmlMaW1pdEV4Y2VlZGVkOiBcIkVuaUxpbWl0RXhjZWVkZWRcIixcbiAgICBGdW5jdGlvbkVycm9yOiBcIkZ1bmN0aW9uRXJyb3JcIixcbiAgICBJZGxlOiBcIklkbGVcIixcbiAgICBJbWFnZUFjY2Vzc0RlbmllZDogXCJJbWFnZUFjY2Vzc0RlbmllZFwiLFxuICAgIEltYWdlRGVsZXRlZDogXCJJbWFnZURlbGV0ZWRcIixcbiAgICBJbnN1ZmZpY2llbnRSb2xlUGVybWlzc2lvbnM6IFwiSW5zdWZmaWNpZW50Um9sZVBlcm1pc3Npb25zXCIsXG4gICAgSW50ZXJuYWxFcnJvcjogXCJJbnRlcm5hbEVycm9yXCIsXG4gICAgSW52YWxpZENvbmZpZ3VyYXRpb246IFwiSW52YWxpZENvbmZpZ3VyYXRpb25cIixcbiAgICBJbnZhbGlkSW1hZ2U6IFwiSW52YWxpZEltYWdlXCIsXG4gICAgSW52YWxpZFJ1bnRpbWU6IFwiSW52YWxpZFJ1bnRpbWVcIixcbiAgICBJbnZhbGlkU2VjdXJpdHlHcm91cDogXCJJbnZhbGlkU2VjdXJpdHlHcm91cFwiLFxuICAgIEludmFsaWRTdGF0ZUtNU0tleTogXCJJbnZhbGlkU3RhdGVLTVNLZXlcIixcbiAgICBJbnZhbGlkU3VibmV0OiBcIkludmFsaWRTdWJuZXRcIixcbiAgICBJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvbjogXCJJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvblwiLFxuICAgIEtNU0tleUFjY2Vzc0RlbmllZDogXCJLTVNLZXlBY2Nlc3NEZW5pZWRcIixcbiAgICBLTVNLZXlOb3RGb3VuZDogXCJLTVNLZXlOb3RGb3VuZFwiLFxuICAgIFJlc3RvcmluZzogXCJSZXN0b3JpbmdcIixcbiAgICBTdWJuZXRPdXRPZklQQWRkcmVzc2VzOiBcIlN1Ym5ldE91dE9mSVBBZGRyZXNzZXNcIixcbn07XG5jb25zdCBJbnZva2VNb2RlID0ge1xuICAgIEJVRkZFUkVEOiBcIkJVRkZFUkVEXCIsXG4gICAgUkVTUE9OU0VfU1RSRUFNOiBcIlJFU1BPTlNFX1NUUkVBTVwiLFxufTtcbmNvbnN0IFJlY3Vyc2l2ZUxvb3AgPSB7XG4gICAgQWxsb3c6IFwiQWxsb3dcIixcbiAgICBUZXJtaW5hdGU6IFwiVGVybWluYXRlXCIsXG59O1xuY29uc3QgVXBkYXRlUnVudGltZU9uID0ge1xuICAgIEF1dG86IFwiQXV0b1wiLFxuICAgIEZ1bmN0aW9uVXBkYXRlOiBcIkZ1bmN0aW9uVXBkYXRlXCIsXG4gICAgTWFudWFsOiBcIk1hbnVhbFwiLFxufTtcbmNvbnN0IEludm9jYXRpb25UeXBlID0ge1xuICAgIERyeVJ1bjogXCJEcnlSdW5cIixcbiAgICBFdmVudDogXCJFdmVudFwiLFxuICAgIFJlcXVlc3RSZXNwb25zZTogXCJSZXF1ZXN0UmVzcG9uc2VcIixcbn07XG5jb25zdCBMb2dUeXBlID0ge1xuICAgIE5vbmU6IFwiTm9uZVwiLFxuICAgIFRhaWw6IFwiVGFpbFwiLFxufTtcbmNvbnN0IFJlc3BvbnNlU3RyZWFtaW5nSW52b2NhdGlvblR5cGUgPSB7XG4gICAgRHJ5UnVuOiBcIkRyeVJ1blwiLFxuICAgIFJlcXVlc3RSZXNwb25zZTogXCJSZXF1ZXN0UmVzcG9uc2VcIixcbn07XG5jb25zdCBGdW5jdGlvblZlcnNpb24gPSB7XG4gICAgQUxMOiBcIkFMTFwiLFxufTtcbmNvbnN0IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lTdGF0dXNFbnVtID0ge1xuICAgIEZBSUxFRDogXCJGQUlMRURcIixcbiAgICBJTl9QUk9HUkVTUzogXCJJTl9QUk9HUkVTU1wiLFxuICAgIFJFQURZOiBcIlJFQURZXCIsXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCIkQ29tbWFuZFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNtaXRoeUNsaWVudC5Db21tYW5kOyB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fQ2xpZW50XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc21pdGh5Q2xpZW50LkNsaWVudDsgfVxufSk7XG5leHBvcnRzLkFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kID0gQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQ7XG5leHBvcnRzLkFkZFBlcm1pc3Npb25Db21tYW5kID0gQWRkUGVybWlzc2lvbkNvbW1hbmQ7XG5leHBvcnRzLkFwcGxpY2F0aW9uTG9nTGV2ZWwgPSBBcHBsaWNhdGlvbkxvZ0xldmVsO1xuZXhwb3J0cy5BcmNoaXRlY3R1cmUgPSBBcmNoaXRlY3R1cmU7XG5leHBvcnRzLkNvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFeGNlcHRpb24gPSBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXhjZXB0aW9uJDE7XG5leHBvcnRzLkNvZGVTaWduaW5nUG9saWN5ID0gQ29kZVNpZ25pbmdQb2xpY3k7XG5leHBvcnRzLkNvZGVTdG9yYWdlRXhjZWVkZWRFeGNlcHRpb24gPSBDb2RlU3RvcmFnZUV4Y2VlZGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLkNvZGVWZXJpZmljYXRpb25GYWlsZWRFeGNlcHRpb24gPSBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLkNyZWF0ZUFsaWFzQ29tbWFuZCA9IENyZWF0ZUFsaWFzQ29tbWFuZDtcbmV4cG9ydHMuQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kID0gQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kO1xuZXhwb3J0cy5DcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kID0gQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZDtcbmV4cG9ydHMuQ3JlYXRlRnVuY3Rpb25Db21tYW5kID0gQ3JlYXRlRnVuY3Rpb25Db21tYW5kO1xuZXhwb3J0cy5DcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQgPSBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQ7XG5leHBvcnRzLkRlbGV0ZUFsaWFzQ29tbWFuZCA9IERlbGV0ZUFsaWFzQ29tbWFuZDtcbmV4cG9ydHMuRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kID0gRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kO1xuZXhwb3J0cy5EZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kID0gRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZDtcbmV4cG9ydHMuRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQgPSBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuRGVsZXRlRnVuY3Rpb25Db21tYW5kID0gRGVsZXRlRnVuY3Rpb25Db21tYW5kO1xuZXhwb3J0cy5EZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCA9IERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kO1xuZXhwb3J0cy5EZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCA9IERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kO1xuZXhwb3J0cy5EZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQgPSBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQ7XG5leHBvcnRzLkRlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQgPSBEZWxldGVMYXllclZlcnNpb25Db21tYW5kO1xuZXhwb3J0cy5EZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCA9IERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kO1xuZXhwb3J0cy5FQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb24gPSBFQzJBY2Nlc3NEZW5pZWRFeGNlcHRpb24kMTtcbmV4cG9ydHMuRUMyVGhyb3R0bGVkRXhjZXB0aW9uID0gRUMyVGhyb3R0bGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLkVDMlVuZXhwZWN0ZWRFeGNlcHRpb24gPSBFQzJVbmV4cGVjdGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLkVGU0lPRXhjZXB0aW9uID0gRUZTSU9FeGNlcHRpb24kMTtcbmV4cG9ydHMuRUZTTW91bnRDb25uZWN0aXZpdHlFeGNlcHRpb24gPSBFRlNNb3VudENvbm5lY3Rpdml0eUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5FRlNNb3VudEZhaWx1cmVFeGNlcHRpb24gPSBFRlNNb3VudEZhaWx1cmVFeGNlcHRpb24kMTtcbmV4cG9ydHMuRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uID0gRUZTTW91bnRUaW1lb3V0RXhjZXB0aW9uJDE7XG5leHBvcnRzLkVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbiA9IEVOSUxpbWl0UmVhY2hlZEV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5FbmRQb2ludFR5cGUgPSBFbmRQb2ludFR5cGU7XG5leHBvcnRzLkV2ZW50U291cmNlTWFwcGluZ01ldHJpYyA9IEV2ZW50U291cmNlTWFwcGluZ01ldHJpYztcbmV4cG9ydHMuRXZlbnRTb3VyY2VQb3NpdGlvbiA9IEV2ZW50U291cmNlUG9zaXRpb247XG5leHBvcnRzLkZ1bGxEb2N1bWVudCA9IEZ1bGxEb2N1bWVudDtcbmV4cG9ydHMuRnVuY3Rpb25SZXNwb25zZVR5cGUgPSBGdW5jdGlvblJlc3BvbnNlVHlwZTtcbmV4cG9ydHMuRnVuY3Rpb25VcmxBdXRoVHlwZSA9IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG5leHBvcnRzLkZ1bmN0aW9uVmVyc2lvbiA9IEZ1bmN0aW9uVmVyc2lvbjtcbmV4cG9ydHMuR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCA9IEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmQ7XG5leHBvcnRzLkdldEFsaWFzQ29tbWFuZCA9IEdldEFsaWFzQ29tbWFuZDtcbmV4cG9ydHMuR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kID0gR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kO1xuZXhwb3J0cy5HZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kID0gR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZDtcbmV4cG9ydHMuR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQgPSBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuR2V0RnVuY3Rpb25Db21tYW5kID0gR2V0RnVuY3Rpb25Db21tYW5kO1xuZXhwb3J0cy5HZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCA9IEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kO1xuZXhwb3J0cy5HZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kID0gR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZDtcbmV4cG9ydHMuR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQgPSBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kID0gR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kO1xuZXhwb3J0cy5HZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQgPSBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQ7XG5leHBvcnRzLkdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCA9IEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZDtcbmV4cG9ydHMuR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCA9IEdldExheWVyVmVyc2lvbkNvbW1hbmQ7XG5leHBvcnRzLkdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmQgPSBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kO1xuZXhwb3J0cy5HZXRQb2xpY3lDb21tYW5kID0gR2V0UG9saWN5Q29tbWFuZDtcbmV4cG9ydHMuR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQgPSBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kID0gR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kO1xuZXhwb3J0cy5JbnZhbGlkQ29kZVNpZ25hdHVyZUV4Y2VwdGlvbiA9IEludmFsaWRDb2RlU2lnbmF0dXJlRXhjZXB0aW9uJDE7XG5leHBvcnRzLkludmFsaWRQYXJhbWV0ZXJWYWx1ZUV4Y2VwdGlvbiA9IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5JbnZhbGlkUmVxdWVzdENvbnRlbnRFeGNlcHRpb24gPSBJbnZhbGlkUmVxdWVzdENvbnRlbnRFeGNlcHRpb24kMTtcbmV4cG9ydHMuSW52YWxpZFJ1bnRpbWVFeGNlcHRpb24gPSBJbnZhbGlkUnVudGltZUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5JbnZhbGlkU2VjdXJpdHlHcm91cElERXhjZXB0aW9uID0gSW52YWxpZFNlY3VyaXR5R3JvdXBJREV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5JbnZhbGlkU3VibmV0SURFeGNlcHRpb24gPSBJbnZhbGlkU3VibmV0SURFeGNlcHRpb24kMTtcbmV4cG9ydHMuSW52YWxpZFppcEZpbGVFeGNlcHRpb24gPSBJbnZhbGlkWmlwRmlsZUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5JbnZvY2F0aW9uVHlwZSA9IEludm9jYXRpb25UeXBlO1xuZXhwb3J0cy5JbnZva2VBc3luY0NvbW1hbmQgPSBJbnZva2VBc3luY0NvbW1hbmQ7XG5leHBvcnRzLkludm9rZUNvbW1hbmQgPSBJbnZva2VDb21tYW5kO1xuZXhwb3J0cy5JbnZva2VNb2RlID0gSW52b2tlTW9kZTtcbmV4cG9ydHMuSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZCA9IEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmQ7XG5leHBvcnRzLktNU0FjY2Vzc0RlbmllZEV4Y2VwdGlvbiA9IEtNU0FjY2Vzc0RlbmllZEV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5LTVNEaXNhYmxlZEV4Y2VwdGlvbiA9IEtNU0Rpc2FibGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLktNU0ludmFsaWRTdGF0ZUV4Y2VwdGlvbiA9IEtNU0ludmFsaWRTdGF0ZUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5LTVNOb3RGb3VuZEV4Y2VwdGlvbiA9IEtNU05vdEZvdW5kRXhjZXB0aW9uJDE7XG5leHBvcnRzLkthZmthU2NoZW1hUmVnaXN0cnlBdXRoVHlwZSA9IEthZmthU2NoZW1hUmVnaXN0cnlBdXRoVHlwZTtcbmV4cG9ydHMuS2Fma2FTY2hlbWFWYWxpZGF0aW9uQXR0cmlidXRlID0gS2Fma2FTY2hlbWFWYWxpZGF0aW9uQXR0cmlidXRlO1xuZXhwb3J0cy5MYW1iZGEgPSBMYW1iZGE7XG5leHBvcnRzLkxhbWJkYUNsaWVudCA9IExhbWJkYUNsaWVudDtcbmV4cG9ydHMuTGFtYmRhU2VydmljZUV4Y2VwdGlvbiA9IExhbWJkYVNlcnZpY2VFeGNlcHRpb24kMTtcbmV4cG9ydHMuTGFzdFVwZGF0ZVN0YXR1cyA9IExhc3RVcGRhdGVTdGF0dXM7XG5leHBvcnRzLkxhc3RVcGRhdGVTdGF0dXNSZWFzb25Db2RlID0gTGFzdFVwZGF0ZVN0YXR1c1JlYXNvbkNvZGU7XG5leHBvcnRzLkxpc3RBbGlhc2VzQ29tbWFuZCA9IExpc3RBbGlhc2VzQ29tbWFuZDtcbmV4cG9ydHMuTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQgPSBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZDtcbmV4cG9ydHMuTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kID0gTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kO1xuZXhwb3J0cy5MaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kID0gTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZDtcbmV4cG9ydHMuTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQgPSBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZDtcbmV4cG9ydHMuTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kID0gTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kO1xuZXhwb3J0cy5MaXN0RnVuY3Rpb25zQ29tbWFuZCA9IExpc3RGdW5jdGlvbnNDb21tYW5kO1xuZXhwb3J0cy5MaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQgPSBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQ7XG5leHBvcnRzLkxpc3RMYXllcnNDb21tYW5kID0gTGlzdExheWVyc0NvbW1hbmQ7XG5leHBvcnRzLkxpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQgPSBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kO1xuZXhwb3J0cy5MaXN0VGFnc0NvbW1hbmQgPSBMaXN0VGFnc0NvbW1hbmQ7XG5leHBvcnRzLkxpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kID0gTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQ7XG5leHBvcnRzLkxvZ0Zvcm1hdCA9IExvZ0Zvcm1hdDtcbmV4cG9ydHMuTG9nVHlwZSA9IExvZ1R5cGU7XG5leHBvcnRzLlBhY2thZ2VUeXBlID0gUGFja2FnZVR5cGU7XG5leHBvcnRzLlBvbGljeUxlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uID0gUG9saWN5TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24kMTtcbmV4cG9ydHMuUHJlY29uZGl0aW9uRmFpbGVkRXhjZXB0aW9uID0gUHJlY29uZGl0aW9uRmFpbGVkRXhjZXB0aW9uJDE7XG5leHBvcnRzLlByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvbiA9IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5Qcm92aXNpb25lZENvbmN1cnJlbmN5U3RhdHVzRW51bSA9IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lTdGF0dXNFbnVtO1xuZXhwb3J0cy5QdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCA9IFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kO1xuZXhwb3J0cy5QdWJsaXNoVmVyc2lvbkNvbW1hbmQgPSBQdWJsaXNoVmVyc2lvbkNvbW1hbmQ7XG5leHBvcnRzLlB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kID0gUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQ7XG5leHBvcnRzLlB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kID0gUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQ7XG5leHBvcnRzLlB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kID0gUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQ7XG5leHBvcnRzLlB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCA9IFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQgPSBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kID0gUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kO1xuZXhwb3J0cy5SZWN1cnNpdmVJbnZvY2F0aW9uRXhjZXB0aW9uID0gUmVjdXJzaXZlSW52b2NhdGlvbkV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5SZWN1cnNpdmVMb29wID0gUmVjdXJzaXZlTG9vcDtcbmV4cG9ydHMuUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQgPSBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZDtcbmV4cG9ydHMuUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQgPSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZDtcbmV4cG9ydHMuUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uID0gUmVxdWVzdFRvb0xhcmdlRXhjZXB0aW9uJDE7XG5leHBvcnRzLlJlc291cmNlQ29uZmxpY3RFeGNlcHRpb24gPSBSZXNvdXJjZUNvbmZsaWN0RXhjZXB0aW9uJDE7XG5leHBvcnRzLlJlc291cmNlSW5Vc2VFeGNlcHRpb24gPSBSZXNvdXJjZUluVXNlRXhjZXB0aW9uJDE7XG5leHBvcnRzLlJlc291cmNlTm90Rm91bmRFeGNlcHRpb24gPSBSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJDE7XG5leHBvcnRzLlJlc291cmNlTm90UmVhZHlFeGNlcHRpb24gPSBSZXNvdXJjZU5vdFJlYWR5RXhjZXB0aW9uJDE7XG5leHBvcnRzLlJlc3BvbnNlU3RyZWFtaW5nSW52b2NhdGlvblR5cGUgPSBSZXNwb25zZVN0cmVhbWluZ0ludm9jYXRpb25UeXBlO1xuZXhwb3J0cy5SdW50aW1lID0gUnVudGltZTtcbmV4cG9ydHMuU2NoZW1hUmVnaXN0cnlFdmVudFJlY29yZEZvcm1hdCA9IFNjaGVtYVJlZ2lzdHJ5RXZlbnRSZWNvcmRGb3JtYXQ7XG5leHBvcnRzLlNlcmlhbGl6ZWRSZXF1ZXN0RW50aXR5VG9vTGFyZ2VFeGNlcHRpb24gPSBTZXJpYWxpemVkUmVxdWVzdEVudGl0eVRvb0xhcmdlRXhjZXB0aW9uJDE7XG5leHBvcnRzLlNlcnZpY2VFeGNlcHRpb24gPSBTZXJ2aWNlRXhjZXB0aW9uJDE7XG5leHBvcnRzLlNuYXBTdGFydEFwcGx5T24gPSBTbmFwU3RhcnRBcHBseU9uO1xuZXhwb3J0cy5TbmFwU3RhcnRFeGNlcHRpb24gPSBTbmFwU3RhcnRFeGNlcHRpb24kMTtcbmV4cG9ydHMuU25hcFN0YXJ0Tm90UmVhZHlFeGNlcHRpb24gPSBTbmFwU3RhcnROb3RSZWFkeUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5TbmFwU3RhcnRPcHRpbWl6YXRpb25TdGF0dXMgPSBTbmFwU3RhcnRPcHRpbWl6YXRpb25TdGF0dXM7XG5leHBvcnRzLlNuYXBTdGFydFRpbWVvdXRFeGNlcHRpb24gPSBTbmFwU3RhcnRUaW1lb3V0RXhjZXB0aW9uJDE7XG5leHBvcnRzLlNvdXJjZUFjY2Vzc1R5cGUgPSBTb3VyY2VBY2Nlc3NUeXBlO1xuZXhwb3J0cy5TdGF0ZSA9IFN0YXRlO1xuZXhwb3J0cy5TdGF0ZVJlYXNvbkNvZGUgPSBTdGF0ZVJlYXNvbkNvZGU7XG5leHBvcnRzLlN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEV4Y2VwdGlvbiA9IFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5TeXN0ZW1Mb2dMZXZlbCA9IFN5c3RlbUxvZ0xldmVsO1xuZXhwb3J0cy5UYWdSZXNvdXJjZUNvbW1hbmQgPSBUYWdSZXNvdXJjZUNvbW1hbmQ7XG5leHBvcnRzLlRlbmFudElzb2xhdGlvbk1vZGUgPSBUZW5hbnRJc29sYXRpb25Nb2RlO1xuZXhwb3J0cy5UaHJvdHRsZVJlYXNvbiA9IFRocm90dGxlUmVhc29uO1xuZXhwb3J0cy5Ub29NYW55UmVxdWVzdHNFeGNlcHRpb24gPSBUb29NYW55UmVxdWVzdHNFeGNlcHRpb24kMTtcbmV4cG9ydHMuVHJhY2luZ01vZGUgPSBUcmFjaW5nTW9kZTtcbmV4cG9ydHMuVW5zdXBwb3J0ZWRNZWRpYVR5cGVFeGNlcHRpb24gPSBVbnN1cHBvcnRlZE1lZGlhVHlwZUV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5VbnRhZ1Jlc291cmNlQ29tbWFuZCA9IFVudGFnUmVzb3VyY2VDb21tYW5kO1xuZXhwb3J0cy5VcGRhdGVBbGlhc0NvbW1hbmQgPSBVcGRhdGVBbGlhc0NvbW1hbmQ7XG5leHBvcnRzLlVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCA9IFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCA9IFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQ7XG5leHBvcnRzLlVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQgPSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kO1xuZXhwb3J0cy5VcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kID0gVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZDtcbmV4cG9ydHMuVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQgPSBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZDtcbmV4cG9ydHMuVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kID0gVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kO1xuZXhwb3J0cy5VcGRhdGVSdW50aW1lT24gPSBVcGRhdGVSdW50aW1lT247XG5leHBvcnRzLnBhZ2luYXRlTGlzdEFsaWFzZXMgPSBwYWdpbmF0ZUxpc3RBbGlhc2VzO1xuZXhwb3J0cy5wYWdpbmF0ZUxpc3RDb2RlU2lnbmluZ0NvbmZpZ3MgPSBwYWdpbmF0ZUxpc3RDb2RlU2lnbmluZ0NvbmZpZ3M7XG5leHBvcnRzLnBhZ2luYXRlTGlzdEV2ZW50U291cmNlTWFwcGluZ3MgPSBwYWdpbmF0ZUxpc3RFdmVudFNvdXJjZU1hcHBpbmdzO1xuZXhwb3J0cy5wYWdpbmF0ZUxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlncyA9IHBhZ2luYXRlTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzO1xuZXhwb3J0cy5wYWdpbmF0ZUxpc3RGdW5jdGlvblVybENvbmZpZ3MgPSBwYWdpbmF0ZUxpc3RGdW5jdGlvblVybENvbmZpZ3M7XG5leHBvcnRzLnBhZ2luYXRlTGlzdEZ1bmN0aW9ucyA9IHBhZ2luYXRlTGlzdEZ1bmN0aW9ucztcbmV4cG9ydHMucGFnaW5hdGVMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZyA9IHBhZ2luYXRlTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWc7XG5leHBvcnRzLnBhZ2luYXRlTGlzdExheWVyVmVyc2lvbnMgPSBwYWdpbmF0ZUxpc3RMYXllclZlcnNpb25zO1xuZXhwb3J0cy5wYWdpbmF0ZUxpc3RMYXllcnMgPSBwYWdpbmF0ZUxpc3RMYXllcnM7XG5leHBvcnRzLnBhZ2luYXRlTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzID0gcGFnaW5hdGVMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3M7XG5leHBvcnRzLnBhZ2luYXRlTGlzdFZlcnNpb25zQnlGdW5jdGlvbiA9IHBhZ2luYXRlTGlzdFZlcnNpb25zQnlGdW5jdGlvbjtcbmV4cG9ydHMud2FpdEZvckZ1bmN0aW9uQWN0aXZlID0gd2FpdEZvckZ1bmN0aW9uQWN0aXZlO1xuZXhwb3J0cy53YWl0Rm9yRnVuY3Rpb25BY3RpdmVWMiA9IHdhaXRGb3JGdW5jdGlvbkFjdGl2ZVYyO1xuZXhwb3J0cy53YWl0Rm9yRnVuY3Rpb25FeGlzdHMgPSB3YWl0Rm9yRnVuY3Rpb25FeGlzdHM7XG5leHBvcnRzLndhaXRGb3JGdW5jdGlvblVwZGF0ZWQgPSB3YWl0Rm9yRnVuY3Rpb25VcGRhdGVkO1xuZXhwb3J0cy53YWl0Rm9yRnVuY3Rpb25VcGRhdGVkVjIgPSB3YWl0Rm9yRnVuY3Rpb25VcGRhdGVkVjI7XG5leHBvcnRzLndhaXRGb3JQdWJsaXNoZWRWZXJzaW9uQWN0aXZlID0gd2FpdEZvclB1Ymxpc2hlZFZlcnNpb25BY3RpdmU7XG5leHBvcnRzLndhaXRVbnRpbEZ1bmN0aW9uQWN0aXZlID0gd2FpdFVudGlsRnVuY3Rpb25BY3RpdmU7XG5leHBvcnRzLndhaXRVbnRpbEZ1bmN0aW9uQWN0aXZlVjIgPSB3YWl0VW50aWxGdW5jdGlvbkFjdGl2ZVYyO1xuZXhwb3J0cy53YWl0VW50aWxGdW5jdGlvbkV4aXN0cyA9IHdhaXRVbnRpbEZ1bmN0aW9uRXhpc3RzO1xuZXhwb3J0cy53YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQgPSB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQ7XG5leHBvcnRzLndhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZFYyID0gd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjI7XG5leHBvcnRzLndhaXRVbnRpbFB1Ymxpc2hlZFZlcnNpb25BY3RpdmUgPSB3YWl0VW50aWxQdWJsaXNoZWRWZXJzaW9uQWN0aXZlO1xuIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVzb2x2ZUh0dHBBdXRoU2NoZW1lQ29uZmlnID0gZXhwb3J0cy5kZWZhdWx0UmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJSHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IGV4cG9ydHMuZGVmYXVsdFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUh0dHBBdXRoU2NoZW1lUGFyYW1ldGVyc1Byb3ZpZGVyID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIkBhd3Mtc2RrL2NvcmVcIik7XG5jb25zdCB1dGlsX21pZGRsZXdhcmVfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3V0aWwtbWlkZGxld2FyZVwiKTtcbmNvbnN0IGRlZmF1bHRSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElIdHRwQXV0aFNjaGVtZVBhcmFtZXRlcnNQcm92aWRlciA9IGFzeW5jIChjb25maWcsIGNvbnRleHQsIGlucHV0KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlcmF0aW9uOiAoMCwgdXRpbF9taWRkbGV3YXJlXzEuZ2V0U21pdGh5Q29udGV4dCkoY29udGV4dCkub3BlcmF0aW9uLFxuICAgICAgICByZWdpb246IChhd2FpdCAoMCwgdXRpbF9taWRkbGV3YXJlXzEubm9ybWFsaXplUHJvdmlkZXIpKGNvbmZpZy5yZWdpb24pKCkpIHx8XG4gICAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImV4cGVjdGVkIGByZWdpb25gIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGBhd3MuYXV0aCNzaWd2NGBcIik7XG4gICAgICAgICAgICB9KSgpLFxuICAgIH07XG59O1xuZXhwb3J0cy5kZWZhdWx0UmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJSHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXIgPSBkZWZhdWx0UmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJSHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXI7XG5mdW5jdGlvbiBjcmVhdGVBd3NBdXRoU2lndjRIdHRwQXV0aE9wdGlvbihhdXRoUGFyYW1ldGVycykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVtZUlkOiBcImF3cy5hdXRoI3NpZ3Y0XCIsXG4gICAgICAgIHNpZ25pbmdQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBuYW1lOiBcInRhZ2dpbmdcIixcbiAgICAgICAgICAgIHJlZ2lvbjogYXV0aFBhcmFtZXRlcnMucmVnaW9uLFxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzRXh0cmFjdG9yOiAoY29uZmlnLCBjb250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgc2lnbmluZ1Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG59XG5jb25zdCBkZWZhdWx0UmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJSHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IChhdXRoUGFyYW1ldGVycykgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgICBzd2l0Y2ggKGF1dGhQYXJhbWV0ZXJzLm9wZXJhdGlvbikge1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goY3JlYXRlQXdzQXV0aFNpZ3Y0SHR0cEF1dGhPcHRpb24oYXV0aFBhcmFtZXRlcnMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbn07XG5leHBvcnRzLmRlZmF1bHRSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElIdHRwQXV0aFNjaGVtZVByb3ZpZGVyID0gZGVmYXVsdFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUh0dHBBdXRoU2NoZW1lUHJvdmlkZXI7XG5jb25zdCByZXNvbHZlSHR0cEF1dGhTY2hlbWVDb25maWcgPSAoY29uZmlnKSA9PiB7XG4gICAgY29uc3QgY29uZmlnXzAgPSAoMCwgY29yZV8xLnJlc29sdmVBd3NTZGtTaWdWNENvbmZpZykoY29uZmlnKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihjb25maWdfMCwge1xuICAgICAgICBhdXRoU2NoZW1lUHJlZmVyZW5jZTogKDAsIHV0aWxfbWlkZGxld2FyZV8xLm5vcm1hbGl6ZVByb3ZpZGVyKShjb25maWcuYXV0aFNjaGVtZVByZWZlcmVuY2UgPz8gW10pLFxuICAgIH0pO1xufTtcbmV4cG9ydHMucmVzb2x2ZUh0dHBBdXRoU2NoZW1lQ29uZmlnID0gcmVzb2x2ZUh0dHBBdXRoU2NoZW1lQ29uZmlnO1xuIiwKICAgICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucnVsZVNldCA9IHZvaWQgMDtcbmNvbnN0IHMgPSBcInJlcXVpcmVkXCIsIHQgPSBcImZuXCIsIHUgPSBcImFyZ3ZcIiwgdiA9IFwicmVmXCI7XG5jb25zdCBhID0gdHJ1ZSwgYiA9IFwiaXNTZXRcIiwgYyA9IFwiYm9vbGVhbkVxdWFsc1wiLCBkID0gXCJlcnJvclwiLCBlID0gXCJlbmRwb2ludFwiLCBmID0gXCJ0cmVlXCIsIGcgPSBcIlBhcnRpdGlvblJlc3VsdFwiLCBoID0geyBbc106IGZhbHNlLCBcInR5cGVcIjogXCJzdHJpbmdcIiB9LCBpID0geyBbc106IHRydWUsIFwiZGVmYXVsdFwiOiBmYWxzZSwgXCJ0eXBlXCI6IFwiYm9vbGVhblwiIH0sIGogPSB7IFt2XTogXCJFbmRwb2ludFwiIH0sIGsgPSB7IFt0XTogYywgW3VdOiBbeyBbdl06IFwiVXNlRklQU1wiIH0sIHRydWVdIH0sIGwgPSB7IFt0XTogYywgW3VdOiBbeyBbdl06IFwiVXNlRHVhbFN0YWNrXCIgfSwgdHJ1ZV0gfSwgbSA9IHt9LCBuID0geyBbdF06IFwiZ2V0QXR0clwiLCBbdV06IFt7IFt2XTogZyB9LCBcInN1cHBvcnRzRklQU1wiXSB9LCBvID0geyBbdF06IGMsIFt1XTogW3RydWUsIHsgW3RdOiBcImdldEF0dHJcIiwgW3VdOiBbeyBbdl06IGcgfSwgXCJzdXBwb3J0c0R1YWxTdGFja1wiXSB9XSB9LCBwID0gW2tdLCBxID0gW2xdLCByID0gW3sgW3ZdOiBcIlJlZ2lvblwiIH1dO1xuY29uc3QgX2RhdGEgPSB7IHZlcnNpb246IFwiMS4wXCIsIHBhcmFtZXRlcnM6IHsgUmVnaW9uOiBoLCBVc2VEdWFsU3RhY2s6IGksIFVzZUZJUFM6IGksIEVuZHBvaW50OiBoIH0sIHJ1bGVzOiBbeyBjb25kaXRpb25zOiBbeyBbdF06IGIsIFt1XTogW2pdIH1dLCBydWxlczogW3sgY29uZGl0aW9uczogcCwgZXJyb3I6IFwiSW52YWxpZCBDb25maWd1cmF0aW9uOiBGSVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWRcIiwgdHlwZTogZCB9LCB7IGNvbmRpdGlvbnM6IHEsIGVycm9yOiBcIkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWRcIiwgdHlwZTogZCB9LCB7IGVuZHBvaW50OiB7IHVybDogaiwgcHJvcGVydGllczogbSwgaGVhZGVyczogbSB9LCB0eXBlOiBlIH1dLCB0eXBlOiBmIH0sIHsgY29uZGl0aW9uczogW3sgW3RdOiBiLCBbdV06IHIgfV0sIHJ1bGVzOiBbeyBjb25kaXRpb25zOiBbeyBbdF06IFwiYXdzLnBhcnRpdGlvblwiLCBbdV06IHIsIGFzc2lnbjogZyB9XSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFtrLCBsXSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFt7IFt0XTogYywgW3VdOiBbYSwgbl0gfSwgb10sIHJ1bGVzOiBbeyBlbmRwb2ludDogeyB1cmw6IFwiaHR0cHM6Ly90YWdnaW5nLWZpcHMue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9XCIsIHByb3BlcnRpZXM6IG0sIGhlYWRlcnM6IG0gfSwgdHlwZTogZSB9XSwgdHlwZTogZiB9LCB7IGVycm9yOiBcIkZJUFMgYW5kIER1YWxTdGFjayBhcmUgZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgb25lIG9yIGJvdGhcIiwgdHlwZTogZCB9XSwgdHlwZTogZiB9LCB7IGNvbmRpdGlvbnM6IHAsIHJ1bGVzOiBbeyBjb25kaXRpb25zOiBbeyBbdF06IGMsIFt1XTogW24sIGFdIH1dLCBydWxlczogW3sgZW5kcG9pbnQ6IHsgdXJsOiBcImh0dHBzOi8vdGFnZ2luZy1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fVwiLCBwcm9wZXJ0aWVzOiBtLCBoZWFkZXJzOiBtIH0sIHR5cGU6IGUgfV0sIHR5cGU6IGYgfSwgeyBlcnJvcjogXCJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRklQU1wiLCB0eXBlOiBkIH1dLCB0eXBlOiBmIH0sIHsgY29uZGl0aW9uczogcSwgcnVsZXM6IFt7IGNvbmRpdGlvbnM6IFtvXSwgcnVsZXM6IFt7IGVuZHBvaW50OiB7IHVybDogXCJodHRwczovL3RhZ2dpbmcue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9XCIsIHByb3BlcnRpZXM6IG0sIGhlYWRlcnM6IG0gfSwgdHlwZTogZSB9XSwgdHlwZTogZiB9LCB7IGVycm9yOiBcIkR1YWxTdGFjayBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IER1YWxTdGFja1wiLCB0eXBlOiBkIH1dLCB0eXBlOiBmIH0sIHsgZW5kcG9pbnQ6IHsgdXJsOiBcImh0dHBzOi8vdGFnZ2luZy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH1cIiwgcHJvcGVydGllczogbSwgaGVhZGVyczogbSB9LCB0eXBlOiBlIH1dLCB0eXBlOiBmIH1dLCB0eXBlOiBmIH0sIHsgZXJyb3I6IFwiSW52YWxpZCBDb25maWd1cmF0aW9uOiBNaXNzaW5nIFJlZ2lvblwiLCB0eXBlOiBkIH1dIH07XG5leHBvcnRzLnJ1bGVTZXQgPSBfZGF0YTtcbiIsCiAgICAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHRFbmRwb2ludFJlc29sdmVyID0gdm9pZCAwO1xuY29uc3QgdXRpbF9lbmRwb2ludHNfMSA9IHJlcXVpcmUoXCJAYXdzLXNkay91dGlsLWVuZHBvaW50c1wiKTtcbmNvbnN0IHV0aWxfZW5kcG9pbnRzXzIgPSByZXF1aXJlKFwiQHNtaXRoeS91dGlsLWVuZHBvaW50c1wiKTtcbmNvbnN0IHJ1bGVzZXRfMSA9IHJlcXVpcmUoXCIuL3J1bGVzZXRcIik7XG5jb25zdCBjYWNoZSA9IG5ldyB1dGlsX2VuZHBvaW50c18yLkVuZHBvaW50Q2FjaGUoe1xuICAgIHNpemU6IDUwLFxuICAgIHBhcmFtczogW1wiRW5kcG9pbnRcIiwgXCJSZWdpb25cIiwgXCJVc2VEdWFsU3RhY2tcIiwgXCJVc2VGSVBTXCJdLFxufSk7XG5jb25zdCBkZWZhdWx0RW5kcG9pbnRSZXNvbHZlciA9IChlbmRwb2ludFBhcmFtcywgY29udGV4dCA9IHt9KSA9PiB7XG4gICAgcmV0dXJuIGNhY2hlLmdldChlbmRwb2ludFBhcmFtcywgKCkgPT4gKDAsIHV0aWxfZW5kcG9pbnRzXzIucmVzb2x2ZUVuZHBvaW50KShydWxlc2V0XzEucnVsZVNldCwge1xuICAgICAgICBlbmRwb2ludFBhcmFtczogZW5kcG9pbnRQYXJhbXMsXG4gICAgICAgIGxvZ2dlcjogY29udGV4dC5sb2dnZXIsXG4gICAgfSkpO1xufTtcbmV4cG9ydHMuZGVmYXVsdEVuZHBvaW50UmVzb2x2ZXIgPSBkZWZhdWx0RW5kcG9pbnRSZXNvbHZlcjtcbnV0aWxfZW5kcG9pbnRzXzIuY3VzdG9tRW5kcG9pbnRGdW5jdGlvbnMuYXdzID0gdXRpbF9lbmRwb2ludHNfMS5hd3NFbmRwb2ludEZ1bmN0aW9ucztcbiIsCiAgICAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldFJ1bnRpbWVDb25maWcgPSB2b2lkIDA7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQGF3cy1zZGsvY29yZVwiKTtcbmNvbnN0IHByb3RvY29sc18xID0gcmVxdWlyZShcIkBhd3Mtc2RrL2NvcmUvcHJvdG9jb2xzXCIpO1xuY29uc3Qgc21pdGh5X2NsaWVudF8xID0gcmVxdWlyZShcIkBzbWl0aHkvc21pdGh5LWNsaWVudFwiKTtcbmNvbnN0IHVybF9wYXJzZXJfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3VybC1wYXJzZXJcIik7XG5jb25zdCB1dGlsX2Jhc2U2NF8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1iYXNlNjRcIik7XG5jb25zdCB1dGlsX3V0ZjhfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3V0aWwtdXRmOFwiKTtcbmNvbnN0IGh0dHBBdXRoU2NoZW1lUHJvdmlkZXJfMSA9IHJlcXVpcmUoXCIuL2F1dGgvaHR0cEF1dGhTY2hlbWVQcm92aWRlclwiKTtcbmNvbnN0IGVuZHBvaW50UmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL2VuZHBvaW50L2VuZHBvaW50UmVzb2x2ZXJcIik7XG5jb25zdCBnZXRSdW50aW1lQ29uZmlnID0gKGNvbmZpZykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAxNy0wMS0yNlwiLFxuICAgICAgICBiYXNlNjREZWNvZGVyOiBjb25maWc/LmJhc2U2NERlY29kZXIgPz8gdXRpbF9iYXNlNjRfMS5mcm9tQmFzZTY0LFxuICAgICAgICBiYXNlNjRFbmNvZGVyOiBjb25maWc/LmJhc2U2NEVuY29kZXIgPz8gdXRpbF9iYXNlNjRfMS50b0Jhc2U2NCxcbiAgICAgICAgZGlzYWJsZUhvc3RQcmVmaXg6IGNvbmZpZz8uZGlzYWJsZUhvc3RQcmVmaXggPz8gZmFsc2UsXG4gICAgICAgIGVuZHBvaW50UHJvdmlkZXI6IGNvbmZpZz8uZW5kcG9pbnRQcm92aWRlciA/PyBlbmRwb2ludFJlc29sdmVyXzEuZGVmYXVsdEVuZHBvaW50UmVzb2x2ZXIsXG4gICAgICAgIGV4dGVuc2lvbnM6IGNvbmZpZz8uZXh0ZW5zaW9ucyA/PyBbXSxcbiAgICAgICAgaHR0cEF1dGhTY2hlbWVQcm92aWRlcjogY29uZmlnPy5odHRwQXV0aFNjaGVtZVByb3ZpZGVyID8/IGh0dHBBdXRoU2NoZW1lUHJvdmlkZXJfMS5kZWZhdWx0UmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJSHR0cEF1dGhTY2hlbWVQcm92aWRlcixcbiAgICAgICAgaHR0cEF1dGhTY2hlbWVzOiBjb25maWc/Lmh0dHBBdXRoU2NoZW1lcyA/PyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2NoZW1lSWQ6IFwiYXdzLmF1dGgjc2lndjRcIixcbiAgICAgICAgICAgICAgICBpZGVudGl0eVByb3ZpZGVyOiAoaXBjKSA9PiBpcGMuZ2V0SWRlbnRpdHlQcm92aWRlcihcImF3cy5hdXRoI3NpZ3Y0XCIpLFxuICAgICAgICAgICAgICAgIHNpZ25lcjogbmV3IGNvcmVfMS5Bd3NTZGtTaWdWNFNpZ25lcigpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbG9nZ2VyOiBjb25maWc/LmxvZ2dlciA/PyBuZXcgc21pdGh5X2NsaWVudF8xLk5vT3BMb2dnZXIoKSxcbiAgICAgICAgcHJvdG9jb2w6IGNvbmZpZz8ucHJvdG9jb2wgPz9cbiAgICAgICAgICAgIG5ldyBwcm90b2NvbHNfMS5Bd3NKc29uMV8xUHJvdG9jb2woe1xuICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2U6IFwiY29tLmFtYXpvbmF3cy5yZXNvdXJjZWdyb3Vwc3RhZ2dpbmdhcGlcIixcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVGFyZ2V0OiBcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSV8yMDE3MDEyNlwiLFxuICAgICAgICAgICAgICAgIGF3c1F1ZXJ5Q29tcGF0aWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgc2VydmljZUlkOiBjb25maWc/LnNlcnZpY2VJZCA/PyBcIlJlc291cmNlIEdyb3VwcyBUYWdnaW5nIEFQSVwiLFxuICAgICAgICB1cmxQYXJzZXI6IGNvbmZpZz8udXJsUGFyc2VyID8/IHVybF9wYXJzZXJfMS5wYXJzZVVybCxcbiAgICAgICAgdXRmOERlY29kZXI6IGNvbmZpZz8udXRmOERlY29kZXIgPz8gdXRpbF91dGY4XzEuZnJvbVV0ZjgsXG4gICAgICAgIHV0ZjhFbmNvZGVyOiBjb25maWc/LnV0ZjhFbmNvZGVyID8/IHV0aWxfdXRmOF8xLnRvVXRmOCxcbiAgICB9O1xufTtcbmV4cG9ydHMuZ2V0UnVudGltZUNvbmZpZyA9IGdldFJ1bnRpbWVDb25maWc7XG4iLAogICAgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRSdW50aW1lQ29uZmlnID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IHBhY2thZ2VfanNvbl8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL3BhY2thZ2UuanNvblwiKSk7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQGF3cy1zZGsvY29yZVwiKTtcbmNvbnN0IGNyZWRlbnRpYWxfcHJvdmlkZXJfbm9kZV8xID0gcmVxdWlyZShcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZVwiKTtcbmNvbnN0IHV0aWxfdXNlcl9hZ2VudF9ub2RlXzEgPSByZXF1aXJlKFwiQGF3cy1zZGsvdXRpbC11c2VyLWFnZW50LW5vZGVcIik7XG5jb25zdCBjb25maWdfcmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCJAc21pdGh5L2NvbmZpZy1yZXNvbHZlclwiKTtcbmNvbnN0IGhhc2hfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvaGFzaC1ub2RlXCIpO1xuY29uc3QgbWlkZGxld2FyZV9yZXRyeV8xID0gcmVxdWlyZShcIkBzbWl0aHkvbWlkZGxld2FyZS1yZXRyeVwiKTtcbmNvbnN0IG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEgPSByZXF1aXJlKFwiQHNtaXRoeS9ub2RlLWNvbmZpZy1wcm92aWRlclwiKTtcbmNvbnN0IG5vZGVfaHR0cF9oYW5kbGVyXzEgPSByZXF1aXJlKFwiQHNtaXRoeS9ub2RlLWh0dHAtaGFuZGxlclwiKTtcbmNvbnN0IHV0aWxfYm9keV9sZW5ndGhfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1ib2R5LWxlbmd0aC1ub2RlXCIpO1xuY29uc3QgdXRpbF9yZXRyeV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1yZXRyeVwiKTtcbmNvbnN0IHJ1bnRpbWVDb25maWdfc2hhcmVkXzEgPSByZXF1aXJlKFwiLi9ydW50aW1lQ29uZmlnLnNoYXJlZFwiKTtcbmNvbnN0IHNtaXRoeV9jbGllbnRfMSA9IHJlcXVpcmUoXCJAc21pdGh5L3NtaXRoeS1jbGllbnRcIik7XG5jb25zdCB1dGlsX2RlZmF1bHRzX21vZGVfbm9kZV8xID0gcmVxdWlyZShcIkBzbWl0aHkvdXRpbC1kZWZhdWx0cy1tb2RlLW5vZGVcIik7XG5jb25zdCBzbWl0aHlfY2xpZW50XzIgPSByZXF1aXJlKFwiQHNtaXRoeS9zbWl0aHktY2xpZW50XCIpO1xuY29uc3QgZ2V0UnVudGltZUNvbmZpZyA9IChjb25maWcpID0+IHtcbiAgICAoMCwgc21pdGh5X2NsaWVudF8yLmVtaXRXYXJuaW5nSWZVbnN1cHBvcnRlZFZlcnNpb24pKHByb2Nlc3MudmVyc2lvbik7XG4gICAgY29uc3QgZGVmYXVsdHNNb2RlID0gKDAsIHV0aWxfZGVmYXVsdHNfbW9kZV9ub2RlXzEucmVzb2x2ZURlZmF1bHRzTW9kZUNvbmZpZykoY29uZmlnKTtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnUHJvdmlkZXIgPSAoKSA9PiBkZWZhdWx0c01vZGUoKS50aGVuKHNtaXRoeV9jbGllbnRfMS5sb2FkQ29uZmlnc0ZvckRlZmF1bHRNb2RlKTtcbiAgICBjb25zdCBjbGllbnRTaGFyZWRWYWx1ZXMgPSAoMCwgcnVudGltZUNvbmZpZ19zaGFyZWRfMS5nZXRSdW50aW1lQ29uZmlnKShjb25maWcpO1xuICAgICgwLCBjb3JlXzEuZW1pdFdhcm5pbmdJZlVuc3VwcG9ydGVkVmVyc2lvbikocHJvY2Vzcy52ZXJzaW9uKTtcbiAgICBjb25zdCBsb2FkZXJDb25maWcgPSB7XG4gICAgICAgIHByb2ZpbGU6IGNvbmZpZz8ucHJvZmlsZSxcbiAgICAgICAgbG9nZ2VyOiBjbGllbnRTaGFyZWRWYWx1ZXMubG9nZ2VyLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2xpZW50U2hhcmVkVmFsdWVzLFxuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHJ1bnRpbWU6IFwibm9kZVwiLFxuICAgICAgICBkZWZhdWx0c01vZGUsXG4gICAgICAgIGF1dGhTY2hlbWVQcmVmZXJlbmNlOiBjb25maWc/LmF1dGhTY2hlbWVQcmVmZXJlbmNlID8/ICgwLCBub2RlX2NvbmZpZ19wcm92aWRlcl8xLmxvYWRDb25maWcpKGNvcmVfMS5OT0RFX0FVVEhfU0NIRU1FX1BSRUZFUkVOQ0VfT1BUSU9OUywgbG9hZGVyQ29uZmlnKSxcbiAgICAgICAgYm9keUxlbmd0aENoZWNrZXI6IGNvbmZpZz8uYm9keUxlbmd0aENoZWNrZXIgPz8gdXRpbF9ib2R5X2xlbmd0aF9ub2RlXzEuY2FsY3VsYXRlQm9keUxlbmd0aCxcbiAgICAgICAgY3JlZGVudGlhbERlZmF1bHRQcm92aWRlcjogY29uZmlnPy5jcmVkZW50aWFsRGVmYXVsdFByb3ZpZGVyID8/IGNyZWRlbnRpYWxfcHJvdmlkZXJfbm9kZV8xLmRlZmF1bHRQcm92aWRlcixcbiAgICAgICAgZGVmYXVsdFVzZXJBZ2VudFByb3ZpZGVyOiBjb25maWc/LmRlZmF1bHRVc2VyQWdlbnRQcm92aWRlciA/P1xuICAgICAgICAgICAgKDAsIHV0aWxfdXNlcl9hZ2VudF9ub2RlXzEuY3JlYXRlRGVmYXVsdFVzZXJBZ2VudFByb3ZpZGVyKSh7IHNlcnZpY2VJZDogY2xpZW50U2hhcmVkVmFsdWVzLnNlcnZpY2VJZCwgY2xpZW50VmVyc2lvbjogcGFja2FnZV9qc29uXzEuZGVmYXVsdC52ZXJzaW9uIH0pLFxuICAgICAgICBtYXhBdHRlbXB0czogY29uZmlnPy5tYXhBdHRlbXB0cyA/PyAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKShtaWRkbGV3YXJlX3JldHJ5XzEuTk9ERV9NQVhfQVRURU1QVF9DT05GSUdfT1BUSU9OUywgY29uZmlnKSxcbiAgICAgICAgcmVnaW9uOiBjb25maWc/LnJlZ2lvbiA/P1xuICAgICAgICAgICAgKDAsIG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEubG9hZENvbmZpZykoY29uZmlnX3Jlc29sdmVyXzEuTk9ERV9SRUdJT05fQ09ORklHX09QVElPTlMsIHsgLi4uY29uZmlnX3Jlc29sdmVyXzEuTk9ERV9SRUdJT05fQ09ORklHX0ZJTEVfT1BUSU9OUywgLi4ubG9hZGVyQ29uZmlnIH0pLFxuICAgICAgICByZXF1ZXN0SGFuZGxlcjogbm9kZV9odHRwX2hhbmRsZXJfMS5Ob2RlSHR0cEhhbmRsZXIuY3JlYXRlKGNvbmZpZz8ucmVxdWVzdEhhbmRsZXIgPz8gZGVmYXVsdENvbmZpZ1Byb3ZpZGVyKSxcbiAgICAgICAgcmV0cnlNb2RlOiBjb25maWc/LnJldHJ5TW9kZSA/P1xuICAgICAgICAgICAgKDAsIG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEubG9hZENvbmZpZykoe1xuICAgICAgICAgICAgICAgIC4uLm1pZGRsZXdhcmVfcmV0cnlfMS5OT0RFX1JFVFJZX01PREVfQ09ORklHX09QVElPTlMsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogYXN5bmMgKCkgPT4gKGF3YWl0IGRlZmF1bHRDb25maWdQcm92aWRlcigpKS5yZXRyeU1vZGUgfHwgdXRpbF9yZXRyeV8xLkRFRkFVTFRfUkVUUllfTU9ERSxcbiAgICAgICAgICAgIH0sIGNvbmZpZyksXG4gICAgICAgIHNoYTI1NjogY29uZmlnPy5zaGEyNTYgPz8gaGFzaF9ub2RlXzEuSGFzaC5iaW5kKG51bGwsIFwic2hhMjU2XCIpLFxuICAgICAgICBzdHJlYW1Db2xsZWN0b3I6IGNvbmZpZz8uc3RyZWFtQ29sbGVjdG9yID8/IG5vZGVfaHR0cF9oYW5kbGVyXzEuc3RyZWFtQ29sbGVjdG9yLFxuICAgICAgICB1c2VEdWFsc3RhY2tFbmRwb2ludDogY29uZmlnPy51c2VEdWFsc3RhY2tFbmRwb2ludCA/PyAoMCwgbm9kZV9jb25maWdfcHJvdmlkZXJfMS5sb2FkQ29uZmlnKShjb25maWdfcmVzb2x2ZXJfMS5OT0RFX1VTRV9EVUFMU1RBQ0tfRU5EUE9JTlRfQ09ORklHX09QVElPTlMsIGxvYWRlckNvbmZpZyksXG4gICAgICAgIHVzZUZpcHNFbmRwb2ludDogY29uZmlnPy51c2VGaXBzRW5kcG9pbnQgPz8gKDAsIG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEubG9hZENvbmZpZykoY29uZmlnX3Jlc29sdmVyXzEuTk9ERV9VU0VfRklQU19FTkRQT0lOVF9DT05GSUdfT1BUSU9OUywgbG9hZGVyQ29uZmlnKSxcbiAgICAgICAgdXNlckFnZW50QXBwSWQ6IGNvbmZpZz8udXNlckFnZW50QXBwSWQgPz8gKDAsIG5vZGVfY29uZmlnX3Byb3ZpZGVyXzEubG9hZENvbmZpZykodXRpbF91c2VyX2FnZW50X25vZGVfMS5OT0RFX0FQUF9JRF9DT05GSUdfT1BUSU9OUywgbG9hZGVyQ29uZmlnKSxcbiAgICB9O1xufTtcbmV4cG9ydHMuZ2V0UnVudGltZUNvbmZpZyA9IGdldFJ1bnRpbWVDb25maWc7XG4iLAogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIG1pZGRsZXdhcmVIb3N0SGVhZGVyID0gcmVxdWlyZSgnQGF3cy1zZGsvbWlkZGxld2FyZS1ob3N0LWhlYWRlcicpO1xudmFyIG1pZGRsZXdhcmVMb2dnZXIgPSByZXF1aXJlKCdAYXdzLXNkay9taWRkbGV3YXJlLWxvZ2dlcicpO1xudmFyIG1pZGRsZXdhcmVSZWN1cnNpb25EZXRlY3Rpb24gPSByZXF1aXJlKCdAYXdzLXNkay9taWRkbGV3YXJlLXJlY3Vyc2lvbi1kZXRlY3Rpb24nKTtcbnZhciBtaWRkbGV3YXJlVXNlckFnZW50ID0gcmVxdWlyZSgnQGF3cy1zZGsvbWlkZGxld2FyZS11c2VyLWFnZW50Jyk7XG52YXIgY29uZmlnUmVzb2x2ZXIgPSByZXF1aXJlKCdAc21pdGh5L2NvbmZpZy1yZXNvbHZlcicpO1xudmFyIGNvcmUgPSByZXF1aXJlKCdAc21pdGh5L2NvcmUnKTtcbnZhciBzY2hlbWEgPSByZXF1aXJlKCdAc21pdGh5L2NvcmUvc2NoZW1hJyk7XG52YXIgbWlkZGxld2FyZUNvbnRlbnRMZW5ndGggPSByZXF1aXJlKCdAc21pdGh5L21pZGRsZXdhcmUtY29udGVudC1sZW5ndGgnKTtcbnZhciBtaWRkbGV3YXJlRW5kcG9pbnQgPSByZXF1aXJlKCdAc21pdGh5L21pZGRsZXdhcmUtZW5kcG9pbnQnKTtcbnZhciBtaWRkbGV3YXJlUmV0cnkgPSByZXF1aXJlKCdAc21pdGh5L21pZGRsZXdhcmUtcmV0cnknKTtcbnZhciBzbWl0aHlDbGllbnQgPSByZXF1aXJlKCdAc21pdGh5L3NtaXRoeS1jbGllbnQnKTtcbnZhciBodHRwQXV0aFNjaGVtZVByb3ZpZGVyID0gcmVxdWlyZSgnLi9hdXRoL2h0dHBBdXRoU2NoZW1lUHJvdmlkZXInKTtcbnZhciBydW50aW1lQ29uZmlnID0gcmVxdWlyZSgnLi9ydW50aW1lQ29uZmlnJyk7XG52YXIgcmVnaW9uQ29uZmlnUmVzb2x2ZXIgPSByZXF1aXJlKCdAYXdzLXNkay9yZWdpb24tY29uZmlnLXJlc29sdmVyJyk7XG52YXIgcHJvdG9jb2xIdHRwID0gcmVxdWlyZSgnQHNtaXRoeS9wcm90b2NvbC1odHRwJyk7XG5cbmNvbnN0IHJlc29sdmVDbGllbnRFbmRwb2ludFBhcmFtZXRlcnMgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHtcbiAgICAgICAgdXNlRHVhbHN0YWNrRW5kcG9pbnQ6IG9wdGlvbnMudXNlRHVhbHN0YWNrRW5kcG9pbnQgPz8gZmFsc2UsXG4gICAgICAgIHVzZUZpcHNFbmRwb2ludDogb3B0aW9ucy51c2VGaXBzRW5kcG9pbnQgPz8gZmFsc2UsXG4gICAgICAgIGRlZmF1bHRTaWduaW5nTmFtZTogXCJ0YWdnaW5nXCIsXG4gICAgfSk7XG59O1xuY29uc3QgY29tbW9uUGFyYW1zID0ge1xuICAgIFVzZUZJUFM6IHsgdHlwZTogXCJidWlsdEluUGFyYW1zXCIsIG5hbWU6IFwidXNlRmlwc0VuZHBvaW50XCIgfSxcbiAgICBFbmRwb2ludDogeyB0eXBlOiBcImJ1aWx0SW5QYXJhbXNcIiwgbmFtZTogXCJlbmRwb2ludFwiIH0sXG4gICAgUmVnaW9uOiB7IHR5cGU6IFwiYnVpbHRJblBhcmFtc1wiLCBuYW1lOiBcInJlZ2lvblwiIH0sXG4gICAgVXNlRHVhbFN0YWNrOiB7IHR5cGU6IFwiYnVpbHRJblBhcmFtc1wiLCBuYW1lOiBcInVzZUR1YWxzdGFja0VuZHBvaW50XCIgfSxcbn07XG5cbmNvbnN0IGdldEh0dHBBdXRoRXh0ZW5zaW9uQ29uZmlndXJhdGlvbiA9IChydW50aW1lQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgX2h0dHBBdXRoU2NoZW1lcyA9IHJ1bnRpbWVDb25maWcuaHR0cEF1dGhTY2hlbWVzO1xuICAgIGxldCBfaHR0cEF1dGhTY2hlbWVQcm92aWRlciA9IHJ1bnRpbWVDb25maWcuaHR0cEF1dGhTY2hlbWVQcm92aWRlcjtcbiAgICBsZXQgX2NyZWRlbnRpYWxzID0gcnVudGltZUNvbmZpZy5jcmVkZW50aWFscztcbiAgICByZXR1cm4ge1xuICAgICAgICBzZXRIdHRwQXV0aFNjaGVtZShodHRwQXV0aFNjaGVtZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBfaHR0cEF1dGhTY2hlbWVzLmZpbmRJbmRleCgoc2NoZW1lKSA9PiBzY2hlbWUuc2NoZW1lSWQgPT09IGh0dHBBdXRoU2NoZW1lLnNjaGVtZUlkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBfaHR0cEF1dGhTY2hlbWVzLnB1c2goaHR0cEF1dGhTY2hlbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX2h0dHBBdXRoU2NoZW1lcy5zcGxpY2UoaW5kZXgsIDEsIGh0dHBBdXRoU2NoZW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaHR0cEF1dGhTY2hlbWVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9odHRwQXV0aFNjaGVtZXM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEh0dHBBdXRoU2NoZW1lUHJvdmlkZXIoaHR0cEF1dGhTY2hlbWVQcm92aWRlcikge1xuICAgICAgICAgICAgX2h0dHBBdXRoU2NoZW1lUHJvdmlkZXIgPSBodHRwQXV0aFNjaGVtZVByb3ZpZGVyO1xuICAgICAgICB9LFxuICAgICAgICBodHRwQXV0aFNjaGVtZVByb3ZpZGVyKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9odHRwQXV0aFNjaGVtZVByb3ZpZGVyO1xuICAgICAgICB9LFxuICAgICAgICBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFscykge1xuICAgICAgICAgICAgX2NyZWRlbnRpYWxzID0gY3JlZGVudGlhbHM7XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWRlbnRpYWxzKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9jcmVkZW50aWFscztcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmNvbnN0IHJlc29sdmVIdHRwQXV0aFJ1bnRpbWVDb25maWcgPSAoY29uZmlnKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaHR0cEF1dGhTY2hlbWVzOiBjb25maWcuaHR0cEF1dGhTY2hlbWVzKCksXG4gICAgICAgIGh0dHBBdXRoU2NoZW1lUHJvdmlkZXI6IGNvbmZpZy5odHRwQXV0aFNjaGVtZVByb3ZpZGVyKCksXG4gICAgICAgIGNyZWRlbnRpYWxzOiBjb25maWcuY3JlZGVudGlhbHMoKSxcbiAgICB9O1xufTtcblxuY29uc3QgcmVzb2x2ZVJ1bnRpbWVFeHRlbnNpb25zID0gKHJ1bnRpbWVDb25maWcsIGV4dGVuc2lvbnMpID0+IHtcbiAgICBjb25zdCBleHRlbnNpb25Db25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbihyZWdpb25Db25maWdSZXNvbHZlci5nZXRBd3NSZWdpb25FeHRlbnNpb25Db25maWd1cmF0aW9uKHJ1bnRpbWVDb25maWcpLCBzbWl0aHlDbGllbnQuZ2V0RGVmYXVsdEV4dGVuc2lvbkNvbmZpZ3VyYXRpb24ocnVudGltZUNvbmZpZyksIHByb3RvY29sSHR0cC5nZXRIdHRwSGFuZGxlckV4dGVuc2lvbkNvbmZpZ3VyYXRpb24ocnVudGltZUNvbmZpZyksIGdldEh0dHBBdXRoRXh0ZW5zaW9uQ29uZmlndXJhdGlvbihydW50aW1lQ29uZmlnKSk7XG4gICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi5jb25maWd1cmUoZXh0ZW5zaW9uQ29uZmlndXJhdGlvbikpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJ1bnRpbWVDb25maWcsIHJlZ2lvbkNvbmZpZ1Jlc29sdmVyLnJlc29sdmVBd3NSZWdpb25FeHRlbnNpb25Db25maWd1cmF0aW9uKGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24pLCBzbWl0aHlDbGllbnQucmVzb2x2ZURlZmF1bHRSdW50aW1lQ29uZmlnKGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24pLCBwcm90b2NvbEh0dHAucmVzb2x2ZUh0dHBIYW5kbGVyUnVudGltZUNvbmZpZyhleHRlbnNpb25Db25maWd1cmF0aW9uKSwgcmVzb2x2ZUh0dHBBdXRoUnVudGltZUNvbmZpZyhleHRlbnNpb25Db25maWd1cmF0aW9uKSk7XG59O1xuXG5jbGFzcyBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ2xpZW50IHtcbiAgICBjb25maWc7XG4gICAgY29uc3RydWN0b3IoLi4uW2NvbmZpZ3VyYXRpb25dKSB7XG4gICAgICAgIGNvbnN0IF9jb25maWdfMCA9IHJ1bnRpbWVDb25maWcuZ2V0UnVudGltZUNvbmZpZyhjb25maWd1cmF0aW9uIHx8IHt9KTtcbiAgICAgICAgc3VwZXIoX2NvbmZpZ18wKTtcbiAgICAgICAgdGhpcy5pbml0Q29uZmlnID0gX2NvbmZpZ18wO1xuICAgICAgICBjb25zdCBfY29uZmlnXzEgPSByZXNvbHZlQ2xpZW50RW5kcG9pbnRQYXJhbWV0ZXJzKF9jb25maWdfMCk7XG4gICAgICAgIGNvbnN0IF9jb25maWdfMiA9IG1pZGRsZXdhcmVVc2VyQWdlbnQucmVzb2x2ZVVzZXJBZ2VudENvbmZpZyhfY29uZmlnXzEpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzMgPSBtaWRkbGV3YXJlUmV0cnkucmVzb2x2ZVJldHJ5Q29uZmlnKF9jb25maWdfMik7XG4gICAgICAgIGNvbnN0IF9jb25maWdfNCA9IGNvbmZpZ1Jlc29sdmVyLnJlc29sdmVSZWdpb25Db25maWcoX2NvbmZpZ18zKTtcbiAgICAgICAgY29uc3QgX2NvbmZpZ181ID0gbWlkZGxld2FyZUhvc3RIZWFkZXIucmVzb2x2ZUhvc3RIZWFkZXJDb25maWcoX2NvbmZpZ180KTtcbiAgICAgICAgY29uc3QgX2NvbmZpZ182ID0gbWlkZGxld2FyZUVuZHBvaW50LnJlc29sdmVFbmRwb2ludENvbmZpZyhfY29uZmlnXzUpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzcgPSBodHRwQXV0aFNjaGVtZVByb3ZpZGVyLnJlc29sdmVIdHRwQXV0aFNjaGVtZUNvbmZpZyhfY29uZmlnXzYpO1xuICAgICAgICBjb25zdCBfY29uZmlnXzggPSByZXNvbHZlUnVudGltZUV4dGVuc2lvbnMoX2NvbmZpZ183LCBjb25maWd1cmF0aW9uPy5leHRlbnNpb25zIHx8IFtdKTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBfY29uZmlnXzg7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShzY2hlbWEuZ2V0U2NoZW1hU2VyZGVQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVVc2VyQWdlbnQuZ2V0VXNlckFnZW50UGx1Z2luKHRoaXMuY29uZmlnKSk7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShtaWRkbGV3YXJlUmV0cnkuZ2V0UmV0cnlQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVDb250ZW50TGVuZ3RoLmdldENvbnRlbnRMZW5ndGhQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVIb3N0SGVhZGVyLmdldEhvc3RIZWFkZXJQbHVnaW4odGhpcy5jb25maWcpKTtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlU3RhY2sudXNlKG1pZGRsZXdhcmVMb2dnZXIuZ2V0TG9nZ2VyUGx1Z2luKHRoaXMuY29uZmlnKSk7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVN0YWNrLnVzZShtaWRkbGV3YXJlUmVjdXJzaW9uRGV0ZWN0aW9uLmdldFJlY3Vyc2lvbkRldGVjdGlvblBsdWdpbih0aGlzLmNvbmZpZykpO1xuICAgICAgICB0aGlzLm1pZGRsZXdhcmVTdGFjay51c2UoY29yZS5nZXRIdHRwQXV0aFNjaGVtZUVuZHBvaW50UnVsZVNldFBsdWdpbih0aGlzLmNvbmZpZywge1xuICAgICAgICAgICAgaHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXI6IGh0dHBBdXRoU2NoZW1lUHJvdmlkZXIuZGVmYXVsdFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUh0dHBBdXRoU2NoZW1lUGFyYW1ldGVyc1Byb3ZpZGVyLFxuICAgICAgICAgICAgaWRlbnRpdHlQcm92aWRlckNvbmZpZ1Byb3ZpZGVyOiBhc3luYyAoY29uZmlnKSA9PiBuZXcgY29yZS5EZWZhdWx0SWRlbnRpdHlQcm92aWRlckNvbmZpZyh7XG4gICAgICAgICAgICAgICAgXCJhd3MuYXV0aCNzaWd2NFwiOiBjb25maWcuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm1pZGRsZXdhcmVTdGFjay51c2UoY29yZS5nZXRIdHRwU2lnbmluZ1BsdWdpbih0aGlzLmNvbmZpZykpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgfVxufVxuXG5sZXQgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbiQxID0gY2xhc3MgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbiBleHRlbmRzIHNtaXRoeUNsaWVudC5TZXJ2aWNlRXhjZXB0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbi5wcm90b3R5cGUpO1xuICAgIH1cbn07XG5cbmxldCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uJDEgPSBjbGFzcyBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIGV4dGVuZHMgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uXCI7XG4gICAgJGZhdWx0ID0gXCJjbGllbnRcIjtcbiAgICBNZXNzYWdlO1xuICAgIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgbmFtZTogXCJDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uXCIsXG4gICAgICAgICAgICAkZmF1bHQ6IFwiY2xpZW50XCIsXG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgQ29uc3RyYWludFZpb2xhdGlvbkV4Y2VwdGlvbiQxID0gY2xhc3MgQ29uc3RyYWludFZpb2xhdGlvbkV4Y2VwdGlvbiBleHRlbmRzIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiQ29uc3RyYWludFZpb2xhdGlvbkV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29uc3RyYWludFZpb2xhdGlvbkV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb25zdHJhaW50VmlvbGF0aW9uRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IEludGVybmFsU2VydmljZUV4Y2VwdGlvbiQxID0gY2xhc3MgSW50ZXJuYWxTZXJ2aWNlRXhjZXB0aW9uIGV4dGVuZHMgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJJbnRlcm5hbFNlcnZpY2VFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcInNlcnZlclwiO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIkludGVybmFsU2VydmljZUV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcInNlcnZlclwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnRlcm5hbFNlcnZpY2VFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiQxID0gY2xhc3MgSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiBleHRlbmRzIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xubGV0IFRocm90dGxlZEV4Y2VwdGlvbiQxID0gY2xhc3MgVGhyb3R0bGVkRXhjZXB0aW9uIGV4dGVuZHMgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvbiQxIHtcbiAgICBuYW1lID0gXCJUaHJvdHRsZWRFeGNlcHRpb25cIjtcbiAgICAkZmF1bHQgPSBcImNsaWVudFwiO1xuICAgIE1lc3NhZ2U7XG4gICAgY29uc3RydWN0b3Iob3B0cykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBuYW1lOiBcIlRocm90dGxlZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBUaHJvdHRsZWRFeGNlcHRpb24ucHJvdG90eXBlKTtcbiAgICAgICAgdGhpcy5NZXNzYWdlID0gb3B0cy5NZXNzYWdlO1xuICAgIH1cbn07XG5sZXQgUGFnaW5hdGlvblRva2VuRXhwaXJlZEV4Y2VwdGlvbiQxID0gY2xhc3MgUGFnaW5hdGlvblRva2VuRXhwaXJlZEV4Y2VwdGlvbiBleHRlbmRzIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24kMSB7XG4gICAgbmFtZSA9IFwiUGFnaW5hdGlvblRva2VuRXhwaXJlZEV4Y2VwdGlvblwiO1xuICAgICRmYXVsdCA9IFwiY2xpZW50XCI7XG4gICAgTWVzc2FnZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIG5hbWU6IFwiUGFnaW5hdGlvblRva2VuRXhwaXJlZEV4Y2VwdGlvblwiLFxuICAgICAgICAgICAgJGZhdWx0OiBcImNsaWVudFwiLFxuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBQYWdpbmF0aW9uVG9rZW5FeHBpcmVkRXhjZXB0aW9uLnByb3RvdHlwZSk7XG4gICAgICAgIHRoaXMuTWVzc2FnZSA9IG9wdHMuTWVzc2FnZTtcbiAgICB9XG59O1xuXG5jb25zdCBfQ0QgPSBcIkNvbXBsaWFuY2VEZXRhaWxzXCI7XG5jb25zdCBfQ0ZSVCA9IFwiQ2xvdWRGb3JtYXRpb25SZXNvdXJjZVR5cGVzXCI7XG5jb25zdCBfQ01FID0gXCJDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uXCI7XG5jb25zdCBfQ1MgPSBcIkNvbXBsaWFuY2VTdGF0dXNcIjtcbmNvbnN0IF9DVkUgPSBcIkNvbnN0cmFpbnRWaW9sYXRpb25FeGNlcHRpb25cIjtcbmNvbnN0IF9EUkMgPSBcIkRlc2NyaWJlUmVwb3J0Q3JlYXRpb25cIjtcbmNvbnN0IF9EUkNJID0gXCJEZXNjcmliZVJlcG9ydENyZWF0aW9uSW5wdXRcIjtcbmNvbnN0IF9EUkNPID0gXCJEZXNjcmliZVJlcG9ydENyZWF0aW9uT3V0cHV0XCI7XG5jb25zdCBfRUMgPSBcIkVycm9yQ29kZVwiO1xuY29uc3QgX0VDUiA9IFwiRXhjbHVkZUNvbXBsaWFudFJlc291cmNlc1wiO1xuY29uc3QgX0VNID0gXCJFcnJvck1lc3NhZ2VcIjtcbmNvbnN0IF9GSSA9IFwiRmFpbHVyZUluZm9cIjtcbmNvbnN0IF9GUk0gPSBcIkZhaWxlZFJlc291cmNlc01hcFwiO1xuY29uc3QgX0dCID0gXCJHcm91cEJ5XCI7XG5jb25zdCBfR0NTID0gXCJHZXRDb21wbGlhbmNlU3VtbWFyeVwiO1xuY29uc3QgX0dDU0kgPSBcIkdldENvbXBsaWFuY2VTdW1tYXJ5SW5wdXRcIjtcbmNvbnN0IF9HQ1NPID0gXCJHZXRDb21wbGlhbmNlU3VtbWFyeU91dHB1dFwiO1xuY29uc3QgX0dSID0gXCJHZXRSZXNvdXJjZXNcIjtcbmNvbnN0IF9HUkkgPSBcIkdldFJlc291cmNlc0lucHV0XCI7XG5jb25zdCBfR1JPID0gXCJHZXRSZXNvdXJjZXNPdXRwdXRcIjtcbmNvbnN0IF9HVEsgPSBcIkdldFRhZ0tleXNcIjtcbmNvbnN0IF9HVEtJID0gXCJHZXRUYWdLZXlzSW5wdXRcIjtcbmNvbnN0IF9HVEtPID0gXCJHZXRUYWdLZXlzT3V0cHV0XCI7XG5jb25zdCBfR1RWID0gXCJHZXRUYWdWYWx1ZXNcIjtcbmNvbnN0IF9HVFZJID0gXCJHZXRUYWdWYWx1ZXNJbnB1dFwiO1xuY29uc3QgX0dUVk8gPSBcIkdldFRhZ1ZhbHVlc091dHB1dFwiO1xuY29uc3QgX0lDRCA9IFwiSW5jbHVkZUNvbXBsaWFuY2VEZXRhaWxzXCI7XG5jb25zdCBfSVBFID0gXCJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uXCI7XG5jb25zdCBfSVNFID0gXCJJbnRlcm5hbFNlcnZpY2VFeGNlcHRpb25cIjtcbmNvbnN0IF9LID0gXCJLZXlcIjtcbmNvbnN0IF9LV05WID0gXCJLZXlzV2l0aE5vbmNvbXBsaWFudFZhbHVlc1wiO1xuY29uc3QgX0xSVCA9IFwiTGlzdFJlcXVpcmVkVGFnc1wiO1xuY29uc3QgX0xSVEkgPSBcIkxpc3RSZXF1aXJlZFRhZ3NJbnB1dFwiO1xuY29uc3QgX0xSVE8gPSBcIkxpc3RSZXF1aXJlZFRhZ3NPdXRwdXRcIjtcbmNvbnN0IF9MVSA9IFwiTGFzdFVwZGF0ZWRcIjtcbmNvbnN0IF9NID0gXCJNZXNzYWdlXCI7XG5jb25zdCBfTVIgPSBcIk1heFJlc3VsdHNcIjtcbmNvbnN0IF9OQ1IgPSBcIk5vbkNvbXBsaWFudFJlc291cmNlc1wiO1xuY29uc3QgX05LID0gXCJOb25jb21wbGlhbnRLZXlzXCI7XG5jb25zdCBfTlQgPSBcIk5leHRUb2tlblwiO1xuY29uc3QgX1BUID0gXCJQYWdpbmF0aW9uVG9rZW5cIjtcbmNvbnN0IF9QVEVFID0gXCJQYWdpbmF0aW9uVG9rZW5FeHBpcmVkRXhjZXB0aW9uXCI7XG5jb25zdCBfUiA9IFwiUmVnaW9uXCI7XG5jb25zdCBfUkFSTiA9IFwiUmVzb3VyY2VBUk5cIjtcbmNvbnN0IF9SQVJOTCA9IFwiUmVzb3VyY2VBUk5MaXN0XCI7XG5jb25zdCBfUkYgPSBcIlJlZ2lvbkZpbHRlcnNcIjtcbmNvbnN0IF9SUFAgPSBcIlJlc291cmNlc1BlclBhZ2VcIjtcbmNvbnN0IF9SVCA9IFwiUmVxdWlyZWRUYWdzXCI7XG5jb25zdCBfUlRGID0gXCJSZXNvdXJjZVR5cGVGaWx0ZXJzXCI7XG5jb25zdCBfUlRGTFJUID0gXCJSZXF1aXJlZFRhZ3NGb3JMaXN0UmVxdWlyZWRUYWdzXCI7XG5jb25zdCBfUlRLID0gXCJSZXBvcnRpbmdUYWdLZXlzXCI7XG5jb25zdCBfUlRNID0gXCJSZXNvdXJjZVRhZ01hcHBpbmdcIjtcbmNvbnN0IF9SVE1MID0gXCJSZXNvdXJjZVRhZ01hcHBpbmdMaXN0XCI7XG5jb25zdCBfUlRlID0gXCJSZXF1aXJlZFRhZ1wiO1xuY29uc3QgX1JUZXMgPSBcIlJlc291cmNlVHlwZVwiO1xuY29uc3QgX1MgPSBcIlN0YXR1c1wiO1xuY29uc3QgX1NCID0gXCJTM0J1Y2tldFwiO1xuY29uc3QgX1NDID0gXCJTdGF0dXNDb2RlXCI7XG5jb25zdCBfU0QgPSBcIlN0YXJ0RGF0ZVwiO1xuY29uc3QgX1NMID0gXCJTM0xvY2F0aW9uXCI7XG5jb25zdCBfU0x1ID0gXCJTdW1tYXJ5TGlzdFwiO1xuY29uc3QgX1NSQyA9IFwiU3RhcnRSZXBvcnRDcmVhdGlvblwiO1xuY29uc3QgX1NSQ0kgPSBcIlN0YXJ0UmVwb3J0Q3JlYXRpb25JbnB1dFwiO1xuY29uc3QgX1NSQ08gPSBcIlN0YXJ0UmVwb3J0Q3JlYXRpb25PdXRwdXRcIjtcbmNvbnN0IF9TdSA9IFwiU3VtbWFyeVwiO1xuY29uc3QgX1QgPSBcIlRhZ3NcIjtcbmNvbnN0IF9URSA9IFwiVGhyb3R0bGVkRXhjZXB0aW9uXCI7XG5jb25zdCBfVEYgPSBcIlRhZ0ZpbHRlcnNcIjtcbmNvbnN0IF9URkwgPSBcIlRhZ0ZpbHRlckxpc3RcIjtcbmNvbnN0IF9URmEgPSBcIlRhZ0ZpbHRlclwiO1xuY29uc3QgX1RJID0gXCJUYXJnZXRJZFwiO1xuY29uc3QgX1RJRiA9IFwiVGFyZ2V0SWRGaWx0ZXJzXCI7XG5jb25zdCBfVElUID0gXCJUYXJnZXRJZFR5cGVcIjtcbmNvbnN0IF9USyA9IFwiVGFnS2V5c1wiO1xuY29uc3QgX1RLRiA9IFwiVGFnS2V5RmlsdGVyc1wiO1xuY29uc3QgX1RMID0gXCJUYWdMaXN0XCI7XG5jb25zdCBfVFBQID0gXCJUYWdzUGVyUGFnZVwiO1xuY29uc3QgX1RSID0gXCJUYWdSZXNvdXJjZXNcIjtcbmNvbnN0IF9UUkkgPSBcIlRhZ1Jlc291cmNlc0lucHV0XCI7XG5jb25zdCBfVFJPID0gXCJUYWdSZXNvdXJjZXNPdXRwdXRcIjtcbmNvbnN0IF9UViA9IFwiVGFnVmFsdWVzXCI7XG5jb25zdCBfVGEgPSBcIlRhZ1wiO1xuY29uc3QgX1VSID0gXCJVbnRhZ1Jlc291cmNlc1wiO1xuY29uc3QgX1VSSSA9IFwiVW50YWdSZXNvdXJjZXNJbnB1dFwiO1xuY29uc3QgX1VSTyA9IFwiVW50YWdSZXNvdXJjZXNPdXRwdXRcIjtcbmNvbnN0IF9WID0gXCJWYWx1ZVwiO1xuY29uc3QgX1ZhID0gXCJWYWx1ZXNcIjtcbmNvbnN0IF9jID0gXCJjbGllbnRcIjtcbmNvbnN0IF9lID0gXCJlcnJvclwiO1xuY29uc3QgX2ggPSBcImh0dHBcIjtcbmNvbnN0IF9zID0gXCJzZXJ2ZXJcIjtcbmNvbnN0IF9zbSA9IFwic21pdGh5LnRzLnNkay5zeW50aGV0aWMuY29tLmFtYXpvbmF3cy5yZXNvdXJjZWdyb3Vwc3RhZ2dpbmdhcGlcIjtcbmNvbnN0IG4wID0gXCJjb20uYW1hem9uYXdzLnJlc291cmNlZ3JvdXBzdGFnZ2luZ2FwaVwiO1xudmFyIENvbXBsaWFuY2VEZXRhaWxzID0gWzMsIG4wLCBfQ0QsIDAsIFtfTkssIF9LV05WLCBfQ1NdLCBbNjQgfCAwLCA2NCB8IDAsIDJdXTtcbnZhciBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9DTUUsXG4gICAge1xuICAgICAgICBbX2VdOiBfYyxcbiAgICB9LFxuICAgIFtfTV0sXG4gICAgWzBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKENvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24sIENvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24kMSk7XG52YXIgQ29uc3RyYWludFZpb2xhdGlvbkV4Y2VwdGlvbiA9IFtcbiAgICAtMyxcbiAgICBuMCxcbiAgICBfQ1ZFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgfSxcbiAgICBbX01dLFxuICAgIFswXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihDb25zdHJhaW50VmlvbGF0aW9uRXhjZXB0aW9uLCBDb25zdHJhaW50VmlvbGF0aW9uRXhjZXB0aW9uJDEpO1xudmFyIERlc2NyaWJlUmVwb3J0Q3JlYXRpb25JbnB1dCA9IFszLCBuMCwgX0RSQ0ksIDAsIFtdLCBbXV07XG52YXIgRGVzY3JpYmVSZXBvcnRDcmVhdGlvbk91dHB1dCA9IFszLCBuMCwgX0RSQ08sIDAsIFtfUywgX1NMLCBfU0QsIF9FTV0sIFswLCAwLCAwLCAwXV07XG52YXIgRmFpbHVyZUluZm8gPSBbMywgbjAsIF9GSSwgMCwgW19TQywgX0VDLCBfRU1dLCBbMSwgMCwgMF1dO1xudmFyIEdldENvbXBsaWFuY2VTdW1tYXJ5SW5wdXQgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR0NTSSxcbiAgICAwLFxuICAgIFtfVElGLCBfUkYsIF9SVEYsIF9US0YsIF9HQiwgX01SLCBfUFRdLFxuICAgIFs2NCB8IDAsIDY0IHwgMCwgNjQgfCAwLCA2NCB8IDAsIDY0IHwgMCwgMSwgMF0sXG5dO1xudmFyIEdldENvbXBsaWFuY2VTdW1tYXJ5T3V0cHV0ID0gWzMsIG4wLCBfR0NTTywgMCwgW19TTHUsIF9QVF0sIFsoKSA9PiBTdW1tYXJ5TGlzdCwgMF1dO1xudmFyIEdldFJlc291cmNlc0lucHV0ID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX0dSSSxcbiAgICAwLFxuICAgIFtfUFQsIF9URiwgX1JQUCwgX1RQUCwgX1JURiwgX0lDRCwgX0VDUiwgX1JBUk5MXSxcbiAgICBbMCwgKCkgPT4gVGFnRmlsdGVyTGlzdCwgMSwgMSwgNjQgfCAwLCAyLCAyLCA2NCB8IDBdLFxuXTtcbnZhciBHZXRSZXNvdXJjZXNPdXRwdXQgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfR1JPLFxuICAgIDAsXG4gICAgW19QVCwgX1JUTUxdLFxuICAgIFswLCAoKSA9PiBSZXNvdXJjZVRhZ01hcHBpbmdMaXN0XSxcbl07XG52YXIgR2V0VGFnS2V5c0lucHV0ID0gWzMsIG4wLCBfR1RLSSwgMCwgW19QVF0sIFswXV07XG52YXIgR2V0VGFnS2V5c091dHB1dCA9IFszLCBuMCwgX0dUS08sIDAsIFtfUFQsIF9US10sIFswLCA2NCB8IDBdXTtcbnZhciBHZXRUYWdWYWx1ZXNJbnB1dCA9IFszLCBuMCwgX0dUVkksIDAsIFtfUFQsIF9LXSwgWzAsIDBdXTtcbnZhciBHZXRUYWdWYWx1ZXNPdXRwdXQgPSBbMywgbjAsIF9HVFZPLCAwLCBbX1BULCBfVFZdLCBbMCwgNjQgfCAwXV07XG52YXIgSW50ZXJuYWxTZXJ2aWNlRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9JU0UsXG4gICAge1xuICAgICAgICBbX2VdOiBfcyxcbiAgICB9LFxuICAgIFtfTV0sXG4gICAgWzBdLFxuXTtcbnNjaGVtYS5UeXBlUmVnaXN0cnkuZm9yKG4wKS5yZWdpc3RlckVycm9yKEludGVybmFsU2VydmljZUV4Y2VwdGlvbiwgSW50ZXJuYWxTZXJ2aWNlRXhjZXB0aW9uJDEpO1xudmFyIEludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgbjAsXG4gICAgX0lQRSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgIH0sXG4gICAgW19NXSxcbiAgICBbMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiwgSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiQxKTtcbnZhciBMaXN0UmVxdWlyZWRUYWdzSW5wdXQgPSBbMywgbjAsIF9MUlRJLCAwLCBbX05ULCBfTVJdLCBbMCwgMV1dO1xudmFyIExpc3RSZXF1aXJlZFRhZ3NPdXRwdXQgPSBbXG4gICAgMyxcbiAgICBuMCxcbiAgICBfTFJUTyxcbiAgICAwLFxuICAgIFtfUlQsIF9OVF0sXG4gICAgWygpID0+IFJlcXVpcmVkVGFnc0Zvckxpc3RSZXF1aXJlZFRhZ3MsIDBdLFxuXTtcbnZhciBQYWdpbmF0aW9uVG9rZW5FeHBpcmVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9QVEVFLFxuICAgIHtcbiAgICAgICAgW19lXTogX2MsXG4gICAgfSxcbiAgICBbX01dLFxuICAgIFswXSxcbl07XG5zY2hlbWEuVHlwZVJlZ2lzdHJ5LmZvcihuMCkucmVnaXN0ZXJFcnJvcihQYWdpbmF0aW9uVG9rZW5FeHBpcmVkRXhjZXB0aW9uLCBQYWdpbmF0aW9uVG9rZW5FeHBpcmVkRXhjZXB0aW9uJDEpO1xudmFyIFJlcXVpcmVkVGFnID0gWzMsIG4wLCBfUlRlLCAwLCBbX1JUZXMsIF9DRlJULCBfUlRLXSwgWzAsIDY0IHwgMCwgNjQgfCAwXV07XG52YXIgUmVzb3VyY2VUYWdNYXBwaW5nID0gW1xuICAgIDMsXG4gICAgbjAsXG4gICAgX1JUTSxcbiAgICAwLFxuICAgIFtfUkFSTiwgX1QsIF9DRF0sXG4gICAgWzAsICgpID0+IFRhZ0xpc3QsICgpID0+IENvbXBsaWFuY2VEZXRhaWxzXSxcbl07XG52YXIgU3RhcnRSZXBvcnRDcmVhdGlvbklucHV0ID0gWzMsIG4wLCBfU1JDSSwgMCwgW19TQl0sIFswXV07XG52YXIgU3RhcnRSZXBvcnRDcmVhdGlvbk91dHB1dCA9IFszLCBuMCwgX1NSQ08sIDAsIFtdLCBbXV07XG52YXIgU3VtbWFyeSA9IFszLCBuMCwgX1N1LCAwLCBbX0xVLCBfVEksIF9USVQsIF9SLCBfUlRlcywgX05DUl0sIFswLCAwLCAwLCAwLCAwLCAxXV07XG52YXIgVGFnID0gWzMsIG4wLCBfVGEsIDAsIFtfSywgX1ZdLCBbMCwgMF1dO1xudmFyIFRhZ0ZpbHRlciA9IFszLCBuMCwgX1RGYSwgMCwgW19LLCBfVmFdLCBbMCwgNjQgfCAwXV07XG52YXIgVGFnUmVzb3VyY2VzSW5wdXQgPSBbMywgbjAsIF9UUkksIDAsIFtfUkFSTkwsIF9UXSwgWzY0IHwgMCwgMTI4IHwgMF1dO1xudmFyIFRhZ1Jlc291cmNlc091dHB1dCA9IFszLCBuMCwgX1RSTywgMCwgW19GUk1dLCBbKCkgPT4gRmFpbGVkUmVzb3VyY2VzTWFwXV07XG52YXIgVGhyb3R0bGVkRXhjZXB0aW9uID0gW1xuICAgIC0zLFxuICAgIG4wLFxuICAgIF9URSxcbiAgICB7XG4gICAgICAgIFtfZV06IF9jLFxuICAgIH0sXG4gICAgW19NXSxcbiAgICBbMF0sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IobjApLnJlZ2lzdGVyRXJyb3IoVGhyb3R0bGVkRXhjZXB0aW9uLCBUaHJvdHRsZWRFeGNlcHRpb24kMSk7XG52YXIgVW50YWdSZXNvdXJjZXNJbnB1dCA9IFszLCBuMCwgX1VSSSwgMCwgW19SQVJOTCwgX1RLXSwgWzY0IHwgMCwgNjQgfCAwXV07XG52YXIgVW50YWdSZXNvdXJjZXNPdXRwdXQgPSBbMywgbjAsIF9VUk8sIDAsIFtfRlJNXSwgWygpID0+IEZhaWxlZFJlc291cmNlc01hcF1dO1xudmFyIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24gPSBbXG4gICAgLTMsXG4gICAgX3NtLFxuICAgIFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJU2VydmljZUV4Y2VwdGlvblwiLFxuICAgIDAsXG4gICAgW10sXG4gICAgW10sXG5dO1xuc2NoZW1hLlR5cGVSZWdpc3RyeS5mb3IoX3NtKS5yZWdpc3RlckVycm9yKFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24sIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24kMSk7XG52YXIgUmVxdWlyZWRUYWdzRm9yTGlzdFJlcXVpcmVkVGFncyA9IFsxLCBuMCwgX1JURkxSVCwgMCwgKCkgPT4gUmVxdWlyZWRUYWddO1xudmFyIFJlc291cmNlVGFnTWFwcGluZ0xpc3QgPSBbMSwgbjAsIF9SVE1MLCAwLCAoKSA9PiBSZXNvdXJjZVRhZ01hcHBpbmddO1xudmFyIFN1bW1hcnlMaXN0ID0gWzEsIG4wLCBfU0x1LCAwLCAoKSA9PiBTdW1tYXJ5XTtcbnZhciBUYWdGaWx0ZXJMaXN0ID0gWzEsIG4wLCBfVEZMLCAwLCAoKSA9PiBUYWdGaWx0ZXJdO1xudmFyIFRhZ0xpc3QgPSBbMSwgbjAsIF9UTCwgMCwgKCkgPT4gVGFnXTtcbnZhciBGYWlsZWRSZXNvdXJjZXNNYXAgPSBbMiwgbjAsIF9GUk0sIDAsIDAsICgpID0+IEZhaWx1cmVJbmZvXTtcbnZhciBEZXNjcmliZVJlcG9ydENyZWF0aW9uID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0RSQyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvRGVzY3JpYmVSZXBvcnRDcmVhdGlvblwiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gRGVzY3JpYmVSZXBvcnRDcmVhdGlvbklucHV0LFxuICAgICgpID0+IERlc2NyaWJlUmVwb3J0Q3JlYXRpb25PdXRwdXQsXG5dO1xudmFyIEdldENvbXBsaWFuY2VTdW1tYXJ5ID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dDUyxcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvR2V0Q29tcGxpYW5jZVN1bW1hcnlcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IEdldENvbXBsaWFuY2VTdW1tYXJ5SW5wdXQsXG4gICAgKCkgPT4gR2V0Q29tcGxpYW5jZVN1bW1hcnlPdXRwdXQsXG5dO1xudmFyIEdldFJlc291cmNlcyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9HUixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvR2V0UmVzb3VyY2VzXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRSZXNvdXJjZXNJbnB1dCxcbiAgICAoKSA9PiBHZXRSZXNvdXJjZXNPdXRwdXQsXG5dO1xudmFyIEdldFRhZ0tleXMgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfR1RLLFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUE9TVFwiLCBcIi9HZXRUYWdLZXlzXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRUYWdLZXlzSW5wdXQsXG4gICAgKCkgPT4gR2V0VGFnS2V5c091dHB1dCxcbl07XG52YXIgR2V0VGFnVmFsdWVzID0gW1xuICAgIDksXG4gICAgbjAsXG4gICAgX0dUVixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvR2V0VGFnVmFsdWVzXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBHZXRUYWdWYWx1ZXNJbnB1dCxcbiAgICAoKSA9PiBHZXRUYWdWYWx1ZXNPdXRwdXQsXG5dO1xudmFyIExpc3RSZXF1aXJlZFRhZ3MgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfTFJULFxuICAgIHtcbiAgICAgICAgW19oXTogW1wiUE9TVFwiLCBcIi9MaXN0UmVxdWlyZWRUYWdzXCIsIDIwMF0sXG4gICAgfSxcbiAgICAoKSA9PiBMaXN0UmVxdWlyZWRUYWdzSW5wdXQsXG4gICAgKCkgPT4gTGlzdFJlcXVpcmVkVGFnc091dHB1dCxcbl07XG52YXIgU3RhcnRSZXBvcnRDcmVhdGlvbiA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9TUkMsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQT1NUXCIsIFwiL1N0YXJ0UmVwb3J0Q3JlYXRpb25cIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IFN0YXJ0UmVwb3J0Q3JlYXRpb25JbnB1dCxcbiAgICAoKSA9PiBTdGFydFJlcG9ydENyZWF0aW9uT3V0cHV0LFxuXTtcbnZhciBUYWdSZXNvdXJjZXMgPSBbXG4gICAgOSxcbiAgICBuMCxcbiAgICBfVFIsXG4gICAge1xuICAgICAgICBbX2hdOiBbXCJQT1NUXCIsIFwiL1RhZ1Jlc291cmNlc1wiLCAyMDBdLFxuICAgIH0sXG4gICAgKCkgPT4gVGFnUmVzb3VyY2VzSW5wdXQsXG4gICAgKCkgPT4gVGFnUmVzb3VyY2VzT3V0cHV0LFxuXTtcbnZhciBVbnRhZ1Jlc291cmNlcyA9IFtcbiAgICA5LFxuICAgIG4wLFxuICAgIF9VUixcbiAgICB7XG4gICAgICAgIFtfaF06IFtcIlBPU1RcIiwgXCIvVW50YWdSZXNvdXJjZXNcIiwgMjAwXSxcbiAgICB9LFxuICAgICgpID0+IFVudGFnUmVzb3VyY2VzSW5wdXQsXG4gICAgKCkgPT4gVW50YWdSZXNvdXJjZXNPdXRwdXQsXG5dO1xuXG5jbGFzcyBEZXNjcmliZVJlcG9ydENyZWF0aW9uQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJXzIwMTcwMTI2XCIsIFwiRGVzY3JpYmVSZXBvcnRDcmVhdGlvblwiLCB7fSlcbiAgICAubihcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudFwiLCBcIkRlc2NyaWJlUmVwb3J0Q3JlYXRpb25Db21tYW5kXCIpXG4gICAgLnNjKERlc2NyaWJlUmVwb3J0Q3JlYXRpb24pXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRDb21wbGlhbmNlU3VtbWFyeUNvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSV8yMDE3MDEyNlwiLCBcIkdldENvbXBsaWFuY2VTdW1tYXJ5XCIsIHt9KVxuICAgIC5uKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50XCIsIFwiR2V0Q29tcGxpYW5jZVN1bW1hcnlDb21tYW5kXCIpXG4gICAgLnNjKEdldENvbXBsaWFuY2VTdW1tYXJ5KVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgR2V0UmVzb3VyY2VzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJXzIwMTcwMTI2XCIsIFwiR2V0UmVzb3VyY2VzXCIsIHt9KVxuICAgIC5uKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50XCIsIFwiR2V0UmVzb3VyY2VzQ29tbWFuZFwiKVxuICAgIC5zYyhHZXRSZXNvdXJjZXMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRUYWdLZXlzQ29tbWFuZCBleHRlbmRzIHNtaXRoeUNsaWVudC5Db21tYW5kXG4gICAgLmNsYXNzQnVpbGRlcigpXG4gICAgLmVwKGNvbW1vblBhcmFtcylcbiAgICAubShmdW5jdGlvbiAoQ29tbWFuZCwgY3MsIGNvbmZpZywgbykge1xuICAgIHJldHVybiBbbWlkZGxld2FyZUVuZHBvaW50LmdldEVuZHBvaW50UGx1Z2luKGNvbmZpZywgQ29tbWFuZC5nZXRFbmRwb2ludFBhcmFtZXRlckluc3RydWN0aW9ucygpKV07XG59KVxuICAgIC5zKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJXzIwMTcwMTI2XCIsIFwiR2V0VGFnS2V5c1wiLCB7fSlcbiAgICAubihcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudFwiLCBcIkdldFRhZ0tleXNDb21tYW5kXCIpXG4gICAgLnNjKEdldFRhZ0tleXMpXG4gICAgLmJ1aWxkKCkge1xufVxuXG5jbGFzcyBHZXRUYWdWYWx1ZXNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElfMjAxNzAxMjZcIiwgXCJHZXRUYWdWYWx1ZXNcIiwge30pXG4gICAgLm4oXCJSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnRcIiwgXCJHZXRUYWdWYWx1ZXNDb21tYW5kXCIpXG4gICAgLnNjKEdldFRhZ1ZhbHVlcylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIExpc3RSZXF1aXJlZFRhZ3NDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElfMjAxNzAxMjZcIiwgXCJMaXN0UmVxdWlyZWRUYWdzXCIsIHt9KVxuICAgIC5uKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50XCIsIFwiTGlzdFJlcXVpcmVkVGFnc0NvbW1hbmRcIilcbiAgICAuc2MoTGlzdFJlcXVpcmVkVGFncylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFN0YXJ0UmVwb3J0Q3JlYXRpb25Db21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElfMjAxNzAxMjZcIiwgXCJTdGFydFJlcG9ydENyZWF0aW9uXCIsIHt9KVxuICAgIC5uKFwiUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50XCIsIFwiU3RhcnRSZXBvcnRDcmVhdGlvbkNvbW1hbmRcIilcbiAgICAuc2MoU3RhcnRSZXBvcnRDcmVhdGlvbilcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNsYXNzIFRhZ1Jlc291cmNlc0NvbW1hbmQgZXh0ZW5kcyBzbWl0aHlDbGllbnQuQ29tbWFuZFxuICAgIC5jbGFzc0J1aWxkZXIoKVxuICAgIC5lcChjb21tb25QYXJhbXMpXG4gICAgLm0oZnVuY3Rpb24gKENvbW1hbmQsIGNzLCBjb25maWcsIG8pIHtcbiAgICByZXR1cm4gW21pZGRsZXdhcmVFbmRwb2ludC5nZXRFbmRwb2ludFBsdWdpbihjb25maWcsIENvbW1hbmQuZ2V0RW5kcG9pbnRQYXJhbWV0ZXJJbnN0cnVjdGlvbnMoKSldO1xufSlcbiAgICAucyhcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSV8yMDE3MDEyNlwiLCBcIlRhZ1Jlc291cmNlc1wiLCB7fSlcbiAgICAubihcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudFwiLCBcIlRhZ1Jlc291cmNlc0NvbW1hbmRcIilcbiAgICAuc2MoVGFnUmVzb3VyY2VzKVxuICAgIC5idWlsZCgpIHtcbn1cblxuY2xhc3MgVW50YWdSZXNvdXJjZXNDb21tYW5kIGV4dGVuZHMgc21pdGh5Q2xpZW50LkNvbW1hbmRcbiAgICAuY2xhc3NCdWlsZGVyKClcbiAgICAuZXAoY29tbW9uUGFyYW1zKVxuICAgIC5tKGZ1bmN0aW9uIChDb21tYW5kLCBjcywgY29uZmlnLCBvKSB7XG4gICAgcmV0dXJuIFttaWRkbGV3YXJlRW5kcG9pbnQuZ2V0RW5kcG9pbnRQbHVnaW4oY29uZmlnLCBDb21tYW5kLmdldEVuZHBvaW50UGFyYW1ldGVySW5zdHJ1Y3Rpb25zKCkpXTtcbn0pXG4gICAgLnMoXCJSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElfMjAxNzAxMjZcIiwgXCJVbnRhZ1Jlc291cmNlc1wiLCB7fSlcbiAgICAubihcIlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudFwiLCBcIlVudGFnUmVzb3VyY2VzQ29tbWFuZFwiKVxuICAgIC5zYyhVbnRhZ1Jlc291cmNlcylcbiAgICAuYnVpbGQoKSB7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICAgIERlc2NyaWJlUmVwb3J0Q3JlYXRpb25Db21tYW5kLFxuICAgIEdldENvbXBsaWFuY2VTdW1tYXJ5Q29tbWFuZCxcbiAgICBHZXRSZXNvdXJjZXNDb21tYW5kLFxuICAgIEdldFRhZ0tleXNDb21tYW5kLFxuICAgIEdldFRhZ1ZhbHVlc0NvbW1hbmQsXG4gICAgTGlzdFJlcXVpcmVkVGFnc0NvbW1hbmQsXG4gICAgU3RhcnRSZXBvcnRDcmVhdGlvbkNvbW1hbmQsXG4gICAgVGFnUmVzb3VyY2VzQ29tbWFuZCxcbiAgICBVbnRhZ1Jlc291cmNlc0NvbW1hbmQsXG59O1xuY2xhc3MgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJIGV4dGVuZHMgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50IHtcbn1cbnNtaXRoeUNsaWVudC5jcmVhdGVBZ2dyZWdhdGVkQ2xpZW50KGNvbW1hbmRzLCBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUEkpO1xuXG5jb25zdCBwYWdpbmF0ZUdldENvbXBsaWFuY2VTdW1tYXJ5ID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50LCBHZXRDb21wbGlhbmNlU3VtbWFyeUNvbW1hbmQsIFwiUGFnaW5hdGlvblRva2VuXCIsIFwiUGFnaW5hdGlvblRva2VuXCIsIFwiTWF4UmVzdWx0c1wiKTtcblxuY29uc3QgcGFnaW5hdGVHZXRSZXNvdXJjZXMgPSBjb3JlLmNyZWF0ZVBhZ2luYXRvcihSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQsIEdldFJlc291cmNlc0NvbW1hbmQsIFwiUGFnaW5hdGlvblRva2VuXCIsIFwiUGFnaW5hdGlvblRva2VuXCIsIFwiUmVzb3VyY2VzUGVyUGFnZVwiKTtcblxuY29uc3QgcGFnaW5hdGVHZXRUYWdLZXlzID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50LCBHZXRUYWdLZXlzQ29tbWFuZCwgXCJQYWdpbmF0aW9uVG9rZW5cIiwgXCJQYWdpbmF0aW9uVG9rZW5cIiwgXCJcIik7XG5cbmNvbnN0IHBhZ2luYXRlR2V0VGFnVmFsdWVzID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50LCBHZXRUYWdWYWx1ZXNDb21tYW5kLCBcIlBhZ2luYXRpb25Ub2tlblwiLCBcIlBhZ2luYXRpb25Ub2tlblwiLCBcIlwiKTtcblxuY29uc3QgcGFnaW5hdGVMaXN0UmVxdWlyZWRUYWdzID0gY29yZS5jcmVhdGVQYWdpbmF0b3IoUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50LCBMaXN0UmVxdWlyZWRUYWdzQ29tbWFuZCwgXCJOZXh0VG9rZW5cIiwgXCJOZXh0VG9rZW5cIiwgXCJNYXhSZXN1bHRzXCIpO1xuXG5jb25zdCBFcnJvckNvZGUgPSB7XG4gICAgSU5URVJOQUxfU0VSVklDRV9FWENFUFRJT046IFwiSW50ZXJuYWxTZXJ2aWNlRXhjZXB0aW9uXCIsXG4gICAgSU5WQUxJRF9QQVJBTUVURVJfRVhDRVBUSU9OOiBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIixcbn07XG5jb25zdCBHcm91cEJ5QXR0cmlidXRlID0ge1xuICAgIFJFR0lPTjogXCJSRUdJT05cIixcbiAgICBSRVNPVVJDRV9UWVBFOiBcIlJFU09VUkNFX1RZUEVcIixcbiAgICBUQVJHRVRfSUQ6IFwiVEFSR0VUX0lEXCIsXG59O1xuY29uc3QgVGFyZ2V0SWRUeXBlID0ge1xuICAgIEFDQ09VTlQ6IFwiQUNDT1VOVFwiLFxuICAgIE9VOiBcIk9VXCIsXG4gICAgUk9PVDogXCJST09UXCIsXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCIkQ29tbWFuZFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNtaXRoeUNsaWVudC5Db21tYW5kOyB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fQ2xpZW50XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc21pdGh5Q2xpZW50LkNsaWVudDsgfVxufSk7XG5leHBvcnRzLkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24gPSBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uJDE7XG5leHBvcnRzLkNvbnN0cmFpbnRWaW9sYXRpb25FeGNlcHRpb24gPSBDb25zdHJhaW50VmlvbGF0aW9uRXhjZXB0aW9uJDE7XG5leHBvcnRzLkRlc2NyaWJlUmVwb3J0Q3JlYXRpb25Db21tYW5kID0gRGVzY3JpYmVSZXBvcnRDcmVhdGlvbkNvbW1hbmQ7XG5leHBvcnRzLkVycm9yQ29kZSA9IEVycm9yQ29kZTtcbmV4cG9ydHMuR2V0Q29tcGxpYW5jZVN1bW1hcnlDb21tYW5kID0gR2V0Q29tcGxpYW5jZVN1bW1hcnlDb21tYW5kO1xuZXhwb3J0cy5HZXRSZXNvdXJjZXNDb21tYW5kID0gR2V0UmVzb3VyY2VzQ29tbWFuZDtcbmV4cG9ydHMuR2V0VGFnS2V5c0NvbW1hbmQgPSBHZXRUYWdLZXlzQ29tbWFuZDtcbmV4cG9ydHMuR2V0VGFnVmFsdWVzQ29tbWFuZCA9IEdldFRhZ1ZhbHVlc0NvbW1hbmQ7XG5leHBvcnRzLkdyb3VwQnlBdHRyaWJ1dGUgPSBHcm91cEJ5QXR0cmlidXRlO1xuZXhwb3J0cy5JbnRlcm5hbFNlcnZpY2VFeGNlcHRpb24gPSBJbnRlcm5hbFNlcnZpY2VFeGNlcHRpb24kMTtcbmV4cG9ydHMuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiA9IEludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24kMTtcbmV4cG9ydHMuTGlzdFJlcXVpcmVkVGFnc0NvbW1hbmQgPSBMaXN0UmVxdWlyZWRUYWdzQ29tbWFuZDtcbmV4cG9ydHMuUGFnaW5hdGlvblRva2VuRXhwaXJlZEV4Y2VwdGlvbiA9IFBhZ2luYXRpb25Ub2tlbkV4cGlyZWRFeGNlcHRpb24kMTtcbmV4cG9ydHMuUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJID0gUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJO1xuZXhwb3J0cy5SZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQgPSBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQ7XG5leHBvcnRzLlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVNlcnZpY2VFeGNlcHRpb24gPSBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElTZXJ2aWNlRXhjZXB0aW9uJDE7XG5leHBvcnRzLlN0YXJ0UmVwb3J0Q3JlYXRpb25Db21tYW5kID0gU3RhcnRSZXBvcnRDcmVhdGlvbkNvbW1hbmQ7XG5leHBvcnRzLlRhZ1Jlc291cmNlc0NvbW1hbmQgPSBUYWdSZXNvdXJjZXNDb21tYW5kO1xuZXhwb3J0cy5UYXJnZXRJZFR5cGUgPSBUYXJnZXRJZFR5cGU7XG5leHBvcnRzLlRocm90dGxlZEV4Y2VwdGlvbiA9IFRocm90dGxlZEV4Y2VwdGlvbiQxO1xuZXhwb3J0cy5VbnRhZ1Jlc291cmNlc0NvbW1hbmQgPSBVbnRhZ1Jlc291cmNlc0NvbW1hbmQ7XG5leHBvcnRzLnBhZ2luYXRlR2V0Q29tcGxpYW5jZVN1bW1hcnkgPSBwYWdpbmF0ZUdldENvbXBsaWFuY2VTdW1tYXJ5O1xuZXhwb3J0cy5wYWdpbmF0ZUdldFJlc291cmNlcyA9IHBhZ2luYXRlR2V0UmVzb3VyY2VzO1xuZXhwb3J0cy5wYWdpbmF0ZUdldFRhZ0tleXMgPSBwYWdpbmF0ZUdldFRhZ0tleXM7XG5leHBvcnRzLnBhZ2luYXRlR2V0VGFnVmFsdWVzID0gcGFnaW5hdGVHZXRUYWdWYWx1ZXM7XG5leHBvcnRzLnBhZ2luYXRlTGlzdFJlcXVpcmVkVGFncyA9IHBhZ2luYXRlTGlzdFJlcXVpcmVkVGFncztcbiIsCiAgICAiaW1wb3J0IHsgSW52b2tlQ29tbWFuZCwgTGFtYmRhQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1sYW1iZGFcIjtcbmltcG9ydCB7XG4gIEdldFJlc291cmNlc0NvbW1hbmQsXG4gIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1yZXNvdXJjZS1ncm91cHMtdGFnZ2luZy1hcGlcIjtcbmltcG9ydCB7IGtlZXBBY3RpdmVQaW5nIH0gZnJvbSBcIi4vc2hhcmVkXCI7XG5cbmNvbnN0IGxhbWJkYUNsaWVudCA9IG5ldyBMYW1iZGFDbGllbnQoKTtcbmNvbnN0IHRhZ2dpbmdDbGllbnQgPSBuZXcgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJQ2xpZW50KCk7XG5jb25zdCBlbmFibGVMb2dzID0gcHJvY2Vzcy5lbnYuRU5BQkxFX0xPR1MgPT09IFwidHJ1ZVwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogeyBhY3Rpb246IFwibGFtYmRhS2VlcEFjdGl2ZVwiIH0pID0+IHtcbiAgY29uc3QgeyBhY3Rpb24gfSA9IGV2ZW50O1xuXG4gIGlmIChhY3Rpb24gPT0gbnVsbCkgcmV0dXJuO1xuICBpZiAoYWN0aW9uICE9PSBcImxhbWJkYUtlZXBBY3RpdmVcIikgcmV0dXJuO1xuXG4gIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZG8ge1xuICAgIGNvbnN0IHsgUmVzb3VyY2VUYWdNYXBwaW5nTGlzdCA9IFtdLCBQYWdpbmF0aW9uVG9rZW4gfSA9XG4gICAgICBhd2FpdCB0YWdnaW5nQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBHZXRSZXNvdXJjZXNDb21tYW5kKHtcbiAgICAgICAgICBSZXNvdXJjZVR5cGVGaWx0ZXJzOiBbXCJsYW1iZGE6ZnVuY3Rpb25cIl0sXG4gICAgICAgICAgUmVzb3VyY2VzUGVyUGFnZTogMjUsXG4gICAgICAgICAgVGFnRmlsdGVyczogW3sgS2V5OiBcImtlZXBBY3RpdmVcIiwgVmFsdWVzOiBbXCJ0cnVlXCJdIH1dLFxuICAgICAgICAgIFBhZ2luYXRpb25Ub2tlbjogbmV4dFRva2VuLFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXh0VG9rZW4gPSBQYWdpbmF0aW9uVG9rZW47XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIFJlc291cmNlVGFnTWFwcGluZ0xpc3QubWFwKGFzeW5jIChyZXNvdXJjZSkgPT4ge1xuICAgICAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChcbiAgICAgICAgICBuZXcgSW52b2tlQ29tbWFuZCh7XG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IHJlc291cmNlLlJlc291cmNlQVJOLFxuICAgICAgICAgICAgSW52b2NhdGlvblR5cGU6IFwiRXZlbnRcIixcbiAgICAgICAgICAgIFBheWxvYWQ6IEpTT04uc3RyaW5naWZ5KHsgW2tlZXBBY3RpdmVQaW5nXTogdHJ1ZSB9KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZW5hYmxlTG9ncykge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbyhgSW52b2tlZCAke3Jlc291cmNlLlJlc291cmNlQVJOfWApO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9IHdoaWxlIChuZXh0VG9rZW4gIT0gbnVsbCk7XG59O1xuIiwKICAgICJleHBvcnQgY29uc3Qga2VlcEFjdGl2ZVBpbmcgPSBgJCRrZWVwQWN0aXZlUGluZyQkYDtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI0c0JBRUEsRkFB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cEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxTQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFNBQVksV0FDcEMsV0FBWSxXQUFZLFNBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVks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QSxFQUNLLEdBQU0sQ0FDWCxDQUNKLEVBQ0EsQ0FDSSxFQUNBLEVBQ0ssR0FBTSxDQUNYLENBQ0osQ0FDSixDQUNKLEVBQ0ksR0FBaUMsQ0FDakMsRUFDQSxFQUNBLEdBQ0EsRUFDQSxDQUFDLEdBQU8sQ0FBRyxFQUNYLENBQUMsSUFBTSxHQUF1QixDQUFDLENBQ25DLEVBQ0ksR0FBb0IsQ0FDcEIsRUFDQSxFQUNBLEdBQ0EsRUFDQSxDQUFDLEdBQU0sRUFBSyxFQUFLLEVBQUksRUFDckIsQ0FDSSxDQUNJLEVBQ0EsRUFDSyxHQUFNLEVBQ1gsQ0FDSixFQUNBLENBQ0ksRUFDQSxFQUNLLEdBQU0sQ0FDWCxDQUNKLEVBQ0EsQ0FDSSxFQUNBLEVBQ0ssR0FBTSxDQUNYLENBQ0osRUFDQSxDQUNJLEVBQ0EsRUFDSyxHQUFNLEVBQ1gsQ0FDSixDQUNKLENBQ0osRUFDSSxHQUFxQixDQUFDLEVBQUcsRUFBSSxHQUFPLEVBQUcsQ0FBQyxFQUFLLEVBQUUsRUFBRyxDQUFDLEVBQUcsSUFBTSxFQUFVLENBQUMsRUFDdkUsR0FBMkIsQ0FDM0IsRUFDQSxFQUNBLEdBQ0EsRUFDQSxDQUFDLEdBQU0sR0FBSyxFQUFLLEVBQUssRUFBSSxFQUMxQixDQUNJLENBQ0ksRUFDQSxFQUNLLEdBQU0sRUFDWCxDQUNKLEVBQ0EsQ0FBQyxFQUFHLENBQUMsRUFDTCxDQUNJLEVBQ0EsRUFDSyxHQUFNLENBQ1gsQ0FDSixFQUNBLENBQ0ksRUFDQSxFQUNLLEdBQU0sQ0FDWCxDQUNKLEVBQ0EsQ0FDSSxFQUNBLEVBQ0ssR0FBTSxFQUNYLENBQ0osQ0FDSixDQUNKLEVBQ0ksR0FBNEIsQ0FDNUIsRUFDQSxFQUNBLEdBQ0EsRUFDQSxDQUFDLEVBQUssRUFBRyxFQUNULENBQUMsRUFBRyxJQUFNLEVBQWlCLENBQy9CLEVBQ0ksR0FBMkMsQ0FDM0MsRUFDQSxFQUNBLEdBQ0EsRUFDQSxDQUFDLEVBQUssRUFBSyxDQUFHLEVBQ2QsQ0FDSSxDQUFDLEVBQUcsQ0FBQyxFQUNMLENBQ0ksRUFDQSxFQUNLLEdBQU0sQ0FDWCxDQUNKLEVBQ0Es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
|